SQLite
 sql >> Database >  >> RDS >> SQLite

Come funziona SQLite Ifnull()

SQLite ifnull() La funzione consente di sostituire i valori NULL con un altro valore.

Richiede due argomenti e restituisce una copia del suo primo argomento non NULL o NULL se entrambi gli argomenti sono NULL.

Il ifnull() la funzione è equivalente a coalesce() con due argomenti.

Semplice esempio

Ecco un semplice esempio per dimostrare il concetto.

SELECT 
  ifnull(123, 0),
  ifnull(NULL, 0);

Risultato:

ifnull(123, 0)  ifnull(NULL, 0)
--------------  ---------------
123             0              

La seconda colonna era NULL e quindi 0 è stato invece restituito.

Esempio di database

Questo esempio usa ifnull() in una query di database. Questo dimostra come ifnull() può essere utile quando si eseguono query su dati che possono contenere valori NULL.

Prendi la seguente tabella come esempio:

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Widget Stick   89.75     
3           Foo Cap        11.99     
4           Free Widget    0.0       
5           Free Foobar    0.0       
6           Free Beer                

La maggior parte dei prodotti è stata popolata con prezzi, ma il prezzo di Birra gratis è NULL.

Possiamo cambiarlo con un valore a nostra scelta.

SELECT 
  ProductName,
  ifnull(Price, 0.0)
FROM Products;

Risultato:

ProductName    ifnull(Price, 0.0)
-------------  ------------------
Widget Holder  139.5             
Widget Stick   89.75             
Foo Cap        11.99             
Free Widget    0.0               
Free Foobar    0.0               
Free Beer      0.0               

Ora ha lo stesso prezzo degli altri prodotti gratuiti.

Il valore di sostituzione non deve necessariamente essere un numero. Puoi anche sostituirlo con una stringa.

SELECT 
  ProductName,
  ifnull(Price, 'FREE!')
FROM Products;

Risultato:

ProductName    ifnull(Price, 'FREE!')
-------------  ----------------------
Widget Holder  139.5                 
Widget Stick   89.75                 
Foo Cap        11.99                 
Free Widget    0.0                   
Free Foobar    0.0                   
Free Beer      FREE!                 

Quando entrambi gli argomenti sono NULL

Se entrambi gli argomenti sono NULL, viene restituito NULL.

SELECT ifnull(NULL, NULL);

Risultato:

ifnull(NULL, NULL)
------------------