SQL ISNULL() , NVL() , IFNULL() e COALESCE() Funzioni
Guardate il seguente "Products" tabella:
P_Id | Nome del prodotto | Prezzo unitario | UnitsInStock | UnitsOnOrder |
---|---|---|---|---|
1 | Jarlsberg | 10.45 | 16 | 15 |
2 | Mascarpone | 32.56 | 23 | |
3 | Gorgonzola | 15.67 | 9 | 20 |
Supponiamo che il "UnitsOnOrder" colonna è opzionale, e può contenere valori NULL.
Abbiamo la seguente istruzione SELECT:
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products
Nel precedente esempio, se uno dei "UnitsOnOrder" i valori sono nulli, il risultato è nullo.
Microsoft ISNULL() funzione viene utilizzata per specificare come vogliamo trattare i valori NULL.
Il NVL() , IFNULL() , e COALESCE() funzioni possono anche essere utilizzati per ottenere lo stesso risultato.
In questo caso vogliamo valori NULL pari a zero.
Qui di seguito, se "UnitsOnOrder" è NULL non danneggerà il calcolo, perché ISNULL() restituisce zero se il valore è NULL:
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 non ha un ISNULL() la funzione. Tuttavia, si può utilizzare il NVL() funzione per ottenere lo stesso risultato:
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products
MySQL
MySQL ha un ISNULL() la funzione. Tuttavia, funziona un po 'diverso da Microsoft ISNULL() funzione.
In MySQL possiamo utilizzare la IFNULL() la funzione, in questo modo:
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
o siamo in grado di utilizzare la COALESCE() la funzione, in questo modo:
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products