Mam zapytanie Microsoft SQL Server 2008, które zwraca dane z trzech tabel przy użyciu lewego sprzężenia zewnętrznego. Wiele razy nie ma danych w drugiej i trzeciej tabeli, więc otrzymuję wartość null, która moim zdaniem jest domyślna dla lewego sprzężenia zewnętrznego. Czy istnieje sposób na zastąpienie wartości domyślnych w instrukcji select? Mam obejście polegające na tym, że mogę wybrać zmienną tabeli, ale wydaje się ona trochę brudna.
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'
Chciałbym, aby jeśli to możliwe, wartości Quantity i RegularPrice miały wartość domyślną zero.
mysql
sql
sql-server
tsql
sql-server-2008
Brett Bim
źródło
źródło
Odpowiedzi:
To tak proste, jak
Lub dokładniej:
źródło
IFNULL
.W przypadku
MySQL
lubSQLite
prawidłowe słowo kluczowe toIFNULL
(nieISNULL
).źródło
MySQL
Na przykład:
Możesz również użyć wielu kolumn, aby sprawdzić ich za
NULL
pomocą funkcji COALESCE . Na przykład:źródło