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!!