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

Come funziona SQLite Nullif()

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.