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

MySQL COALESCE() expliqué

Dans MySQL, 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, 'Fish', 'Rabbit');

Résultat :

Fish

Dans ce cas, Fish était la première valeur non NULL, et donc COALESCE() renvoyé cette valeur.

Rabbit était également une valeur non NULL, mais elle venait après Fish et donc il n'a pas été retourné.

Lorsque toutes les valeurs sont NULL

Si toutes les valeurs sont NULL , COALESCE() renvoie NULL :

SELECT COALESCE( null, null );

Résultat :

NULL

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, 2 * 10 );

Nous obtenons ceci :

20

Exemple de base de données

Supposons que nous lancions la requête suivante :

SELECT
  PetName,
  PetType
FROM Pets;

Et nous obtenons le résultat suivant :

PetName	PetType
------- -------
Meow	Cat
Woof	Dog
Tweet	Bird
Awk	NULL
Moo	Cow
Omph	NULL

Nous pouvons voir que deux 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(PetType, 'Unknown') AS "PetType"
FROM Pets;

Résultat :

PetName	PetType
------- -------
Meow	Cat
Woof	Dog
Tweet	Bird
Awk	Unknown
Moo	Cow
Omph	Unknown

Dans ce cas, nous avons remplacé toutes les valeurs NULL par la chaîne Unknown .

Il n'a pas besoin d'être une chaîne cependant. Voici un autre exemple qui remplace les valeurs NULL par un entier :

SELECT 
  EmployeeName,
  Salary,
  COALESCE(Salary, 0) AS "Salary (adjusted)"
FROM Employees;

Résultat :

EmployeeName	Salary	Salary (adjusted)
--------------  ------  -----------------
Homer Einstein	NULL	0
Bart Hawking	100000	100000

Nombre d'arguments non valides

Utilisation de COALESCE() sans aucun argument génère une erreur :

SELECT COALESCE();

Résultat :

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1