La sélection des enregistrements NULL avec MySQL
by Jean-françois JOLY on fév.16, 2010, under Developpement Web
Peut être qu’un jour il vous est arrivé d’avoir besoin de faire une sélection dans une table et de sélectionner tous les champs sauf telle ou telle valeur.
Par exemple imaginons que vous ayez une table « Voitures » avec un champs « Couleur » qui par défaut vaut Null (par exemple à un moment T on ne connait pas la couleur). Maintenant vous voulez récuppérer toutes les voitures qui ne sont pas potentiellement vertes.
Le premier réflexe consisterait à écrire le code SQL suivant :
1 2 3 | SELECT * FROM Voitures WHERE Couleur!='Vert'; |
Malheureusement, avec ce code, vous n’auriez pas les voitures dont la couleur est NULL. C’est plutôt amusant mais si on écrit la requète suivante :
1 | SELECT IF(NULL!="bla bla",'Vrai','faux') |
Si vous l’exécutez, vous allez trouver … faux !!! Plutot amusant et cause d’erreurs.
Pourquoi est ce que le test donne faux ? Je ne sais pas vraiment, je suppose que c’est du au fait que, tester la condition avec quelque chose qui n’existe pas est impossible, et que donc le résultat ne peut être que « faux ». Il faut donc penser lors de ce genre de test à utiliser IS NULL pour ne pas oublier des enregistrements :
1 2 3 | SELECT * FROM Voitures WHERE Couleur!='Vert' OR Couleur IS NULL; |
Et là vous aurez toutes les voitures potentiellement pas vertes.
A la recherche de quelque chose ?
Utiliser ce champs pour faire votre recherche :
Vous n'avez pas trouvé votre bonheur ? N'hésitez pas à contacter l'auteur de ce blog ou alors laissez un commentaire sur un post !
Les liens !
Quelques liens intéressants...
Les archives
Tout, classé par ordre chronologique ...