Funzione SQL NULL

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

Vedi la tabella "Products" seguente:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 computer 699 25 15
2 printer 365 36  
3 telephone 280 159 57

Se "UnitsOnOrder" è opzionale e può contenere valori NULL.

Utilizziamo l'istruzione SELECT seguente:

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

Nell'esempio sopra, se il valore di "UnitsOnOrder" è NULL, il risultato è NULL.

La funzione ISNULL() di Microsoft viene utilizzata per definire come gestire i valori NULL.

Le funzioni NVL(), IFNULL() e COALESCE() possono anche ottenere lo stesso risultato.

Qui, speriamo che il valore NULL sia 0.

Di seguito, se "UnitsOnOrder" è NULL, non è vantaggioso per il calcolo, quindi se il valore è NULL, ISNULL() restituisce 0.

SQL Server / MS Access

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

Oracle

Oracle non ha la funzione ISNULL(). Tuttavia, possiamo utilizzare la funzione NVL() per ottenere lo stesso risultato:

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

MySQL

MySQL ha anche una funzione simile a ISNULL(). Tuttavia, il suo modo di funzionare è leggermente diverso dalla funzione ISNULL() di Microsoft.

In MySQL, possiamo usare la funzione IFNULL() come segue:

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

O possiamo usare la funzione COALESCE() come segue:

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