TOP

Funzioni SQL NULL

Funzioni SQL IFNULL(), ISNULL(), COALESCE() e NVL()


Diamo un'occhiata alla seguente tabella "Products" ("Prodotti"):

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

Supponiamo che la colonna "UnitsOnOrder" sia facoltativa e possa contenere il valore NULL.

Considera la seguente istruzione SELECT:

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

Nell'esempio sopra, se uno qualsiasi dei valori "UnitsOnOrder" è uguale a NULL, il risultato sarà NULL.

Decisione

MySQL

La funzione MySQL IFNULL() consente di restituire un valore alternativo se l'espressione è uguale a NULL:

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

oppure possiamo usare la funzione COALESCE(), ad esempio:

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

SQL Server

La funzione SQL Server ISNULL() consente di restituire un valore alternativo se l'espressione ha il valore NULL:

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

oppure possiamo usare la funzione COALESCE(), ad esempio:

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

_accesso tblMS

La funzione MS Access IsNull() restituisce TRUE (-1) se l'espressione è nulla, altrimenti FALSE (0):

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

Oracle

La funzione Oracle NVL() ottiene lo stesso risultato:

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

oppure possiamo usare la funzione COALESCE(), ad esempio:

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