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;