Dans MySQL, il peut être difficile de récupérer des lignes contenant des valeurs nulles à l'aide de l'opérateur de comparaison standard (=). Cette anomalie découle de la nature unique de la valeur nulle en SQL.
Illustrons cela avec un exemple :
SELECT pid FROM planets WHERE userid = NULL
Cette requête devrait renvoyer des lignes où la colonne ID utilisateur a la valeur NULL. Cependant, dans de nombreux cas, il renvoie un ensemble vide, malgré la présence des données dans la table (comme vérifié via phpMyAdmin).
Le problème se pose car null dans SQL est distinct des autres valeurs. Selon l’une des 12 règles de Codd, null ne peut être égal à aucune autre valeur, y compris elle-même. Par conséquent, utiliser l'opérateur = pour comparer une colonne à NULL renverra toujours false.
Pour réussir à récupérer des lignes avec des valeurs nulles, nous devons utiliser l'opérateur IS NULL :
SELECT pid FROM planets WHERE userid IS NULL
En utilisant IS NULL, nous examinons si la colonne est vraiment nulle plutôt que d'essayer de la comparer à NULL en utilisant le = opérateur.
Cependant, il est essentiel d'épuiser les autres options avant de recourir à la modification de la structure de la table ou du moteur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!