Protože jakýkoli operátor porovnání nad NULL
objevující se ve filtru sql by měl (a dělá) způsobit, že řádek nebude vybrán.
Měli byste použít null safe operátor <=>
pro srovnání se sloupcem obsahujícím NULL
hodnoty a další NOT NULL
hodnota, ale <=>
vrátí 1
když jsou oba operandy NULL
protože NULL
se nikdy nepovažuje za rovné NULL
.
Toto je příklad situace, kdy je užitečný operátor null safe:
Máte stůl:
Phones
----
Number
CountryCode (can be NULL)
A chcete vybrat všechna telefonní čísla, která nepocházejí ze Španělska (kód země 34). První pokus je obvykle:
SELECT Number FROM Phones WHERE CountryCode <> 34;
Všimli jste si však, že některé telefony bez kódu země (hodnota NULL) nejsou uvedeny a chcete je zahrnout do výsledku, protože nepocházejí ze Španělska:
SELECT Number FROM Phones WHERE CountryCode <=> 34;