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

Come funziona Coalesce() in SQLite

In SQLite, il coalesce() La funzione restituisce una copia del suo primo argomento non NULL o NULL se tutti gli argomenti sono NULL.

È simile a ifnull() funzione, tranne che coalesce() accetta più di due argomenti (ifnull() accetta solo due argomenti).

Sintassi

La sintassi è questa:

coalesce(X,Y,...)

Ciò significa che puoi fornire due o più argomenti. La funzione restituirà quindi il primo che non è NULL.

Esempio

Ecco un esempio da dimostrare.

SELECT coalesce(NULL,1);

Risultato:

1

Qui ho fornito due argomenti e coalesce() ha restituito il primo valore non NULL, che in questo caso è 1 .

Altri esempi

Ecco altre varianti per dimostrare come coalesce() gestisce ogni caso.

.mode line
SELECT
  coalesce(NULL,NULL,1,2,3),
  coalesce(1,NULL,2,3),
  coalesce(NULL,3,2,1),
  coalesce(1,2,3,NULL),
  coalesce(NULL,NULL);

Risultato:

coalesce(NULL,NULL,1,2,3) = 1
     coalesce(1,NULL,2,3) = 1
     coalesce(NULL,3,2,1) = 3
     coalesce(1,2,3,NULL) = 1
      coalesce(NULL,NULL) = 

Quindi è molto semplice. Restituisce semplicemente il primo argomento che non è NULL, indipendentemente dal numero di argomenti forniti.

Nota inoltre che se tutti gli argomenti sono NULL, restituisce NULL.

Esempio di database

Ecco un esempio di utilizzo di coalesce() funzione in una query del database.

.mode column
SELECT 
  CustomerId, 
  coalesce(Fax, 'N/A') AS Fax
FROM Customer
LIMIT 5;

Risultato:

CustomerId  Fax          
----------  -------------
1           +55 (12) 3923
2           N/A          
3           N/A          
4           N/A          
5           +420 2 4172 5

Ecco come appare senza usare coalesce() funzione:

.mode column
SELECT 
  CustomerId, 
  Fax
FROM Customer
LIMIT 5;

Risultato:

CustomerId  Fax               
----------  ------------------
1           +55 (12) 3923-5566
2                             
3                             
4                             
5           +420 2 4172 5555  

Quindi coalesce() può essere utile per restituire una stringa significativa invece di NULL.

Con tre argomenti

Ecco un esempio di aggiunta di un terzo argomento. Questo ci consente di eseguire più opzioni prima di arrivare a NULL.

SELECT 
  CustomerId, 
  coalesce(Fax, Email, 'N/A') AS "Fax/Email"
FROM Customer
LIMIT 5;

Risultato:

CustomerId  Fax/Email             
----------  ----------------------
1           +55 (12) 3923-5566    
2           [email protected] 
3           [email protected]   
4           [email protected] 
5           +420 2 4172 5555