Dans MariaDB, le COALESCE()
renvoie la première valeur non NULL de la liste, ou NULL s'il n'y a pas de valeurs non NULL.
Syntaxe
La syntaxe ressemble à ceci :
COALESCE(value,...)
Exemple
Voici un exemple simple pour illustrer :
SELECT COALESCE(null, 'Red', 'Black');
Résultat :
Red
Dans ce cas, Red
était la première valeur non NULL, et donc COALESCE()
renvoyé cette valeur.
Black
était également non-NULL, mais il venait après Red
et donc il n'a pas été retourné.
Exemple de base de données
Supposons que nous lancions la requête suivante :
SELECT
PetName,
DOB AS "Date of Birth"
FROM Pets;
Et nous obtenons le résultat suivant :
+---------+---------------+ | PetName | Date of Birth | +---------+---------------+ | Fluffy | 2020-11-20 | | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | | Bark | NULL | | Meow | NULL | +---------+---------------+
Nous pouvons voir que les deux dernières lignes ont des valeurs NULL dans la colonne DOB.
Si nous voulions remplacer NULL
avec une autre valeur, nous pourrions modifier la requête comme suit :
SELECT
PetName,
COALESCE(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets;
Résultat :
+---------+---------------+ | PetName | Date of Birth | +---------+---------------+ | Fluffy | 2020-11-20 | | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | | Bark | None Supplied | | Meow | None Supplied | +---------+---------------+
Expressions
COALESCE()
renvoie la valeur actuelle de la première expression qui initialement n'est pas évaluée à NULL
. Par conséquent, si nous passons une expression comme celle-ci :
SELECT COALESCE( null, 5 * 2 );
Nous obtenons ceci :
10
Lorsque toutes les valeurs sont NULL
Si toutes les valeurs sont NULL
, COALESCE()
renvoie NULL
:
SELECT COALESCE( null, null );
Résultat :
NULL
COALESCE()
contre IFNULL()
Lorsqu'il est utilisé avec deux valeurs, COALESCE()
fonctionne comme IFNULL
:
SET @a = null, @b = 52;
SELECT
COALESCE(@a, @b),
IFNULL(@a, @b);
Résultat :
+------------------+----------------+ | COALESCE(@a, @b) | IFNULL(@a, @b) | +------------------+----------------+ | 52 | 52 | +------------------+----------------+
Nombre d'arguments non valides
Utilisation de COALESCE()
sans aucun argument génère une erreur :
SELECT COALESCE();
Résultat :
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1