Il nullif()
di SQLite function è una pratica funzione che consente di trattare determinati valori come NULL quando richiesto.
Non deve essere confuso con ifnull()
la funzione, che fa il contrario, ti consente di trattare i valori NULL come qualcos'altro.
Il nullif()
la funzione accetta due argomenti e restituisce il suo primo argomento se gli argomenti sono diversi e NULL se gli argomenti sono gli stessi.
Sintassi
La sintassi è questa:
nullif(X,Y)
La funzione cerca nei suoi argomenti da sinistra a destra un argomento che definisce una funzione di confronto e utilizza tale funzione per tutti i confronti di stringhe. Se nessuno dei due argomenti definisce una funzione di confronto, viene utilizzato BINARY.
Esempio
Ecco un esempio di base da dimostrare.
SELECT
nullif(123,0),
nullif(0,0),
nullif(123,123);
Risultato:
nullif(123,0) nullif(0,0) nullif(123,123) ------------- ----------- --------------- 123
Nella prima colonna i due valori sono diversi, quindi viene restituito il primo valore.
Nella seconda colonna entrambi i valori sono gli stessi, quindi viene restituito NULL.
Lo stesso vale per la terza colonna:entrambi i valori sono gli stessi, quindi viene restituito NULL.
Un esempio pratico
Ecco un esempio di database che dimostra un utilizzo più pratico per nullif()
funzione.
Prendi la seguente tabella chiamata Prodotti :
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
Possiamo vedere che due prodotti hanno un prezzo pari a zero. Un altro prodotto ha un prezzo NULL.
Ora, immagina di voler scoprire quanti prodotti hanno un prezzo positivo. In altre parole, non vogliamo includere prodotti che hanno un prezzo o zero (o NULL del resto).
Per fare ciò, possiamo usare nullif()
insieme a count()
funzione.
SELECT count(nullif(Price, 0.00))
FROM Products;
Risultato:
3
Otteniamo 3 come previsto, che è esattamente quante righe hanno un valore positivo nel Prezzo colonna.
Funziona perché count()
la funzione conta solo valori non NULL. Convertendo gli importi zero in NULL, siamo in grado di ignorare quei valori nel nostro calcolo.
Eccolo di nuovo senza nullif()
funzione.
SELECT count(Price)
FROM Products;
Risultato:
5
Quindi, in questo caso, include gli importi zero e otteniamo 5. Ignora ancora la riga 6 perché in realtà ha un valore NULL.