A quoi sert la fonction COALESCE dans MySQL

Publié le 30 Mai 2011

Avec MySQL la valeur NULL est particulière et a parfois un comportement inattendu.

 

Par exemple si je prends un table avec un champ ayant des valeurs NULL.

 

Pour faire simple la table suivante:

 

CREATE TABLE noms(
   nom VARCHAR(45)
);

 

avec les données suivantes:

 

nom
Bliz

Patatos

NULL
NULL
Patatos

 

Maintenant comptons les lignes ayant pour nom  'Patatos':

 

SELECT count(*) FROM noms WHERE nom = 'Patatos';

 

On obtient 2. Jusque là tout va bien.

 

Maintenant comptons les autres lignes :

 

SELECT count(*) FROM noms WHERE nom <> 'Patatos';

 

Et là surprise on obtient 1 (et non 3)!!

 

Bien sûr il y a une explication:

MySQL écarte automatiquement les valeurs NULL avant de faire une comparaison.

 

Et c'est là qu'intervient la fonction COALESCE qui permet de remplacer NULL par une valeur donnée.

 

Pour reprendre la dernière requête:

 

SELECT count(*) FROM noms WHERE coalesce(nom, 'sans nom') <> 'Patatos';

 

Et là on obtient bien 3! Ouf!!

Rédigé par Bliz

Publié dans #MySQL

Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
E
Cette phrase est un contre-sens :<br /> "MySQL écarte automatiquement les valeurs NULL avant de faire une comparaison"<br /> En effet, "NULL" n'est pas une valeur, c'est tout le contraire: c'est un marqueur d'absence de valeur !
Répondre
A
<br /> <br /> Merci ;)<br /> <br /> <br /> <br />
Répondre