TOP

SQL NULL-Funktionen

SQL-Funktionen IFNULL(), ISNULL(), COALESCE() und NVL()


Schauen wir uns die folgende Tabelle „Products“ („Produkte“) an:

ProductIDProductNameSupplierIDCategoryIDUnitPrice
1Chais1110 boxes x 20 bags18.00
2Chang1124 - 12 oz bottles19.00
3Aniseed Syrup1212 - 550 ml bottles10.00
4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
5Chef Anton's Gumbo Mix2236 boxes21.35

Gehen Sie davon aus, dass die Spalte „UnitsOnOrder“ optional ist und den Wert NULL enthalten kann.

Betrachten Sie die folgende Anweisung SELECT:

SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products

Wenn im obigen Beispiel einer der „UnitsOnOrder“-Werte gleich NULL ist, ist das Ergebnis NULL.

Entscheidung

MySQL

Mit der Funktion MySQL IFNULL() können Sie einen alternativen Wert zurückgeben, wenn der Ausdruck gleich NULL ist:

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products

oder wir können die Funktion COALESCE() verwenden, zum Beispiel:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

SQL Server

Mit der Funktion SQL Server ISNULL() können Sie einen alternativen Wert zurückgeben, wenn der Ausdruck den Wert NULL hat:

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products

oder wir können die Funktion COALESCE() verwenden, zum Beispiel:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

MS Access

Die MS Access-Funktion IsNull() gibt TRUE (-1) zurück, wenn der Ausdruck null ist, andernfalls FALSE (0):

SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products

Oracle

Die Funktion Oracle NVL() erzielt das gleiche Ergebnis:

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products

oder wir können die Funktion COALESCE() verwenden, zum Beispiel:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products