Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi null<>null=null dans mysql

Parce que tout opérateur de comparaison sur NULL apparaissant dans un filtre sql devrait (et fait) faire en sorte que la ligne ne soit pas sélectionnée.

Vous devez utiliser l'opérateur null safe <=> à comparer à la colonne contenant NULL valeurs et autres NOT NULL valeur mais <=> renverra 1 lorsque les deux opérandes sont NULL car NULL n'est jamais considéré égal à NULL .

Voici un exemple de situation où l'opérateur null safe est utile :

Vous avez un tableau :

Phones
----
Number
CountryCode (can be NULL) 

Et vous souhaitez sélectionner tous les numéros de téléphone ne provenant pas d'Espagne (code pays 34). Le premier essai est généralement :

SELECT Number FROM Phones WHERE CountryCode <> 34;

Mais vous remarquez qu'il y a des téléphones sans code de pays (valeur NULL) qui ne sont pas répertoriés et vous souhaitez les inclure dans votre résultat car ils ne sont pas d'Espagne :

SELECT Number FROM Phones WHERE CountryCode <=> 34;