Porque cualquier operador de comparación sobre NULL aparecer en un filtro sql debería (y lo hace) hacer que la fila no se seleccione.
Debe usar el operador seguro nulo <=> para comparar con la columna que contiene NULL valores y otros NOT NULL valor pero <=> devolverá 1 cuando ambos operandos son NULL porque NULL nunca se considera igual a NULL .
Este es un ejemplo de una situación en la que el operador seguro nulo es útil:
Tienes una mesa:
Phones
----
Number
CountryCode (can be NULL)
Y quieres seleccionar todos los números de teléfono que no sean de España (código de país 34). El primer intento suele ser:
SELECT Number FROM Phones WHERE CountryCode <> 34;
Pero observa que hay teléfonos sin código de país (valor NULL) que no están en la lista y desea incluirlos en su resultado porque no son de España:
SELECT Number FROM Phones WHERE CountryCode <=> 34;