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