J'ai une requête Microsoft SQL Server 2008 qui renvoie les données de trois tables en utilisant une jointure externe gauche. Plusieurs fois, il n'y a pas de données dans les deuxième et troisième tables et j'obtiens donc un null qui, je pense, est la valeur par défaut pour la jointure externe gauche. Existe-t-il un moyen de remplacer les valeurs par défaut dans l'instruction select? J'ai une solution de contournement en ce que je peux sélectionner dans une variable de table mais cela me semble un peu sale.
SELECT iar.Description, iai.Quantity, iai.Quantity * rpl.RegularPrice as 'Retail',
iar.Compliance FROM InventoryAdjustmentReason iar
LEFT OUTER JOIN InventoryAdjustmentItem iai on (iar.Id = iai.InventoryAdjustmentReasonId)
LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'
Je voudrais que le Quantity et RegularPrice soient par défaut à zéro si possible.
mysql
sql
sql-server
tsql
sql-server-2008
Brett Bim
la source
la source
Réponses:
C'est aussi simple que
Ou plus complètement:
la source
IFNULL
.En cas de
MySQL
ouSQLite
le mot-clé correct estIFNULL
(nonISNULL
).la source
MySQL
Par exemple:
En outre, vous pouvez utiliser plusieurs colonnes pour vérifier leur
NULL
par COALESCE fonction. Par exemple:la source