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

Comment COALESCE() fonctionne dans MariaDB

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