SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como Coalesce() funciona no SQLite


No SQLite, o coalesce() A função retorna uma cópia de seu primeiro argumento não NULL ou NULL se todos os argumentos forem NULL.

É semelhante ao ifnull() função, exceto que coalesce() aceita mais de dois argumentos (ifnull() aceita apenas dois argumentos).

Sintaxe


A sintaxe fica assim:
coalesce(X,Y,...)

O que isso significa é que você pode fornecer dois ou mais argumentos. A função então retornará o primeiro que não for NULL.

Exemplo


Aqui está um exemplo para demonstrar.
SELECT coalesce(NULL,1);

Resultado:
1

Aqui eu forneci dois argumentos e coalesce() retornou o primeiro valor não NULL, que neste caso é 1 .

Mais exemplos


Aqui estão mais variações para demonstrar como coalesce() trata de cada 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);

Resultado:
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) = 

Então é muito direto. Ele simplesmente retorna o primeiro argumento que não é NULL, independentemente de quantos argumentos são fornecidos.

Observe também que, se todos os argumentos forem NULL, ele retornará NULL.

Exemplo de banco de dados


Aqui está um exemplo de uso do coalesce() função em uma consulta de banco de dados.
.mode column
SELECT 
  CustomerId, 
  coalesce(Fax, 'N/A') AS Fax
FROM Customer
LIMIT 5;

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

Aqui está o que parece sem usar o coalesce() função:
.mode column
SELECT 
  CustomerId, 
  Fax
FROM Customer
LIMIT 5;

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

Então o coalesce() pode ser útil para retornar uma string significativa em vez de NULL.

Com três argumentos


Aqui está um exemplo de adição de um terceiro argumento. Isso nos permite percorrer várias opções antes de chegar a NULL.
SELECT 
  CustomerId, 
  coalesce(Fax, Email, 'N/A') AS "Fax/Email"
FROM Customer
LIMIT 5;

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