Maison >base de données >tutoriel mysql >Comment puis-je récupérer efficacement des lignes avec des valeurs NULL dans MySQL ?

Comment puis-je récupérer efficacement des lignes avec des valeurs NULL dans MySQL ?

DDD
DDDoriginal
2024-12-25 04:52:11341parcourir

How Can I Effectively Retrieve Rows with NULL Values in MySQL?

Comprendre la valeur nulle dans MySQL

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.

Le défi de la récupération des valeurs nulles

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).

L'origine du problème

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.

La solution : l'opérateur IS NULL

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.

Autres considérations

  • Assurez-vous que la colonne est réellement nulle et n'est pas stockée comme "NULL" ou "null" avec un espace de fin.
  • Vérifiez si le moteur de table est MyISAM, qui peut rencontrer des problèmes de gestion des valeurs nulles. La migration vers InnoDB peut résoudre ce problème.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn