syntaxe

COALESCE(value,...)

Description

renvoie la première valeur non nulle de la liste, ou NULL s’il existe des valeurs non nulles. Au moins un paramètre doit être passé.

la fonction est utile pour remplacer une valeur par défaut par des valeurs null lors de l’affichage des données.

Voir aussi les valeurs NULL dans MariaDB.,

exemples

SELECT COALESCE(NULL,1);+------------------+| COALESCE(NULL,1) |+------------------+| 1 |+------------------+
SELECT COALESCE(NULL,NULL,NULL);+--------------------------+| COALESCE(NULL,NULL,NULL) |+--------------------------+| NULL |+--------------------------+

lorsque deux arguments sont donnés, COALESCE() est le même que IFNULL():

SET @a=NULL, @b=1;SELECT COALESCE(@a, @b), IFNULL(@a, @b);+------------------+----------------+| COALESCE(@a, @b) | IFNULL(@a, @b) |+------------------+----------------+| 1 | 1 |+------------------+----------------+

confusion de type hexadécimal:

CREATE TABLE t1 (a INT, b VARCHAR(10));INSERT INTO t1 VALUES (0x31, 0x61),(COALESCE(0x31), COALESCE(0x61));SELECT * FROM t1;+------+------+| a | b |+------+------+| 49 | a || 1 | a |+------+------+

la raison des résultats différents ci-dessus est que lorsque 0x31 est inséré directement dans la colonne, il est traité comme un nombre (voir littéraux hexadécimaux), tandis que lorsque 0x31 est passé à COALESCE(), il est traité comme une chaîne, car:

  • Les valeurs hexadécimales ont un type de
  • COALESCE() a le même type de données que l’argument.,

substituant zéro à NULL (dans ce cas lorsque la fonction d’agrégation renvoie NULL après n’avoir trouvé aucune ligne):

SELECT SUM(score) FROM student;+------------+| SUM(score) |+------------+| NULL |+------------+SELECT COALESCE(SUM(score),0) FROM student;+------------------------+| COALESCE(SUM(score),0) |+------------------------+| 0 |+------------------------+

Voir aussi

  • valeurs NULL
  • est l’opérateur NULL
  • n’est pas l’opérateur NULL
  • IFNULL function
  • null function
  • connecter les types de données