Защото всеки оператор за сравнение над NULL появяването в sql филтър трябва (и прави) да направи редът да не бъде избран.
Трябва да използвате нулев безопасен оператор <=> за сравнение с колона, съдържаща NULL стойности и други NOT NULL стойност, но <=> ще върне 1 когато и двата операнда са NULL защото NULL никога не се счита за равно на NULL .
Това е пример за ситуация, при която нулевият безопасен оператор е полезен:
Имате таблица:
Phones
----
Number
CountryCode (can be NULL)
И искате да изберете всички телефонни номера, които не са от Испания (код на държавата 34). Първият опит обикновено е:
SELECT Number FROM Phones WHERE CountryCode <> 34;
Но забелязвате, че има телефони без код на държавата (стойност NULL), които не са посочени и искате да ги включите в резултата си, защото не са нито от Испания:
SELECT Number FROM Phones WHERE CountryCode <=> 34;