Zurück zu: SQL Tutorial
SQL Funktionen IFNULL(), ISNULL(), COALESCE() und NVL()
Schauen Sie sich die folgende „Produkte“ Tabelle an:
P_Id | ProductName | UnitPrice | UnitsInStock | UnitsOnOrder |
---|---|---|---|---|
1 | Jarlsberg | 10.45 | 16 | 15 |
2 | Mascarpone | 32.56 | 23 | |
3 | Gorgonzola | 15.67 | 9 | 20 |
Angenommen, die Spalte „UnitsOnOrder“ ist optional und kann NULL Werte enthalten.
Sehen Sie sich die folgende SELECT Anweisung an:
SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products;
Wenn im obigen Beispiel einer der „UnitsOnOrder“ Werte NULL ist, ist das Ergebnis NULL.
Lösungen
MySQL
Mit der MySQL Funktion IFNULL()
können Sie einen alternativen Wert zurückgeben, wenn ein Ausdruck NULL ist:
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;
oder wir können die Funktion COALESCE()
wie folgt verwenden:
SELECT Produktname, Stückpreis * (Lagereinheiten + COALESCE(Bestellte Einheiten, 0))
FROM Produkte;
SQL Server
Mit der SQL Server Funktion ISNULL()
können Sie einen alternativen Wert zurückgeben, wenn ein Ausdruck NULL ist:
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;
oder wir können die Funktion COALESCE()
wie folgt verwenden:
MS Access
Die MS Access Funktion IsNull()
gibt TRUE (-1) zurück, wenn der Ausdruck ein Nullwert ist, andernfalls FALSE (0):
SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;
Oracle
Die Oracle NVL()
Funktion erzielt dasselbe Ergebnis:
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products;
oder wir können die Funktion COALESCE()
wie folgt verwenden:
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;