SQL ISNULL() , NVL() , IFNULL() und COALESCE() Funktionen
Schauen Sie sich die folgenden "Products" Tabelle:
p_id | Produktname | Einzelpreis | Einheiten im Lager | UnitsOnOrder |
---|---|---|---|---|
1 | Jarlsberg | 10,45 | 16 | 15 |
2 | Mascarpone | 32.56 | 23 | |
3 | Gorgonzola | 15,67 | 9 | 20 |
Angenommen, die "UnitsOnOrder" Spalte optional ist, und NULL - Werte enthalten.
Wir haben die folgende SELECT-Anweisung:
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products
In dem obigen Beispiel , wenn eine der "UnitsOnOrder" Werte NULL sind, ist das Ergebnis NULL.
Microsofts ISNULL() Funktion wird verwendet , um festzulegen , wie wir NULL - Werte behandelt werden sollen.
Die NVL() , IFNULL() und COALESCE() Funktionen können auch das gleiche Ergebnis zu erreichen , verwendet werden.
In diesem Fall wollen wir NULL-Werte auf Null.
Wenn Unten "UnitsOnOrder" NULL ist , wird es nicht die Berechnung schaden, weil ISNULL() eine Null zurückgibt , wenn der Wert NULL ist:
MS Access
SELECT ProductName,UnitPrice*(UnitsInStock+IIF(ISNULL(UnitsOnOrder),0,UnitsOnOrder))
FROM Products
SQL Server
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
Oracle
Oracle keine haben ISNULL() Funktion. Wir können jedoch die Verwendung NVL() Funktion das gleiche Ergebnis zu erzielen:
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products
MySQL
MySQL hat eine haben ISNULL() Funktion. Allerdings funktioniert es ein wenig anders aus Microsofts ISNULL() Funktion.
In MySQL können wir die Verwendung IFNULL() Funktion, wie folgt aus :
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
oder können wir die Verwendung COALESCE() Funktion, wie folgt aus :
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products