Porque qualquer operador de comparação sobre
NULL aparecendo em um filtro sql deve (e faz) fazer com que a linha não seja selecionada. Você deve usar o operador nulo seguro
<=> para comparar com a coluna contendo NULL valores e outros NOT NULL valor, mas <=> retornará 1 quando ambos os operandos são NULL porque NULL nunca é considerado igual a NULL . Este é um exemplo de uma situação em que o operador null safe é útil:
Você tem uma tabela:
Phones
----
Number
CountryCode (can be NULL)
E você deseja selecionar todos os números de telefone que não sejam da Espanha (código do país 34). A primeira tentativa geralmente é:
SELECT Number FROM Phones WHERE CountryCode <> 34;
Mas você percebe que há telefones sem código de país (valor NULL) não listados e deseja incluí-los em seu resultado porque eles não são da Espanha:
SELECT Number FROM Phones WHERE CountryCode <=> 34;