Maison >base de données >tutoriel mysql >Comment sélectionner correctement les lignes avec des valeurs NULL dans MySQL ?

Comment sélectionner correctement les lignes avec des valeurs NULL dans MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-01 11:04:14285parcourir

How Do I Correctly Select Rows with NULL Values in MySQL?

Comprendre les valeurs nulles dans MySQL

Dans MySQL, les valeurs nulles représentent des données manquantes ou inconnues. Contrairement à d’autres valeurs, null ne peut pas être directement comparé ou attribué à lui-même. Ce comportement peut conduire à des résultats inattendus lors de l'interrogation de lignes avec des colonnes nulles.

Problème : sélection de lignes avec des colonnes nulles

Lors de la tentative de sélection de lignes avec des valeurs nulles pour un colonne spécifique, un formulaire de requête courant ressemble à ceci :

SELECT pid FROM planets WHERE userid = NULL;

Cependant, cette requête peut renvoyer un ensemble vide même lorsque la table contient des lignes avec null dans cette colonne.

Solution : Utilisation de la comparaison IS NULL

Pour interroger correctement les valeurs nulles, utilisez l'opérateur IS NULL au lieu de l'opérateur =. La requête correcte doit être :

SELECT pid FROM planets WHERE userid IS NULL;

Cet opérateur vérifie explicitement si la colonne est nulle, évitant ainsi les complications d'une égalité nulle.

Considérations supplémentaires

  • Sensibilité à la casse : SQL n'est pas sensible à la casse, donc NULL et null représentent null valeurs.
  • Optimisation des index : Les comparaisons nulles ne peuvent pas bénéficier des index, ce qui pourrait ralentir les requêtes pour les grandes tables.
  • Moteur de stockage alternatif : InnoDB est un meilleur choix pour les tables avec des valeurs nulles fréquentes car il les stocke plus efficacement que MyISAM.

Conclusion

En utilisant l'opérateur IS NULL et en considérant des moteurs de stockage alternatifs comme InnoDB, vous pouvez interroger avec précision les lignes avec des valeurs nulles dans MySQL. Cependant, n'oubliez pas que null reste une valeur spéciale avec des propriétés uniques qui peuvent affecter les résultats de la requête.

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