Gli ultimi tutorial di sviluppo web
 

SQL Funzioni NULL


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