SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment fonctionne Coalesce() dans SQLite

Dans SQLite, le coalesce() La fonction renvoie une copie de son premier argument non NULL, ou NULL si tous les arguments sont NULL.

C'est similaire à ifnull() fonction, sauf que coalesce() accepte plus de deux arguments (ifnull() n'accepte que deux arguments).

Syntaxe

La syntaxe ressemble à ceci :

coalesce(X,Y,...)

Cela signifie que vous pouvez fournir deux arguments ou plus. La fonction renverra alors le premier qui n'est pas NULL.

Exemple

Voici un exemple pour illustrer.

SELECT coalesce(NULL,1);

Résultat :

1

Ici, j'ai fourni deux arguments et coalesce() a renvoyé la première valeur non NULL, qui dans ce cas est 1 .

Plus d'exemples

Voici d'autres variantes pour montrer comment coalesce() gère chaque cas.

.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);

Résultat :

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

C'est donc très simple. Il renvoie simplement le premier argument qui n'est pas NULL, quel que soit le nombre d'arguments fournis.

Notez également que si tous les arguments sont NULL, alors il renvoie NULL.

Exemple de base de données

Voici un exemple d'utilisation de coalesce() fonction dans une requête de base de données.

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

Résultat :

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

Voici à quoi cela ressemble sans utiliser le coalesce() fonction :

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

Résultat :

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

Donc le coalesce() La fonction peut être utile pour renvoyer une chaîne significative au lieu de NULL.

Avec trois arguments

Voici un exemple d'ajout d'un troisième argument. Cela nous permet de parcourir plusieurs options avant d'arriver à NULL.

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

Résultat :

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