Porównywanie wartości NULL w SQL Server

Dzisiejszy post ma charakter raczej ciekawostki– w praktyce nic przydatnego nie wnosi:). Wiemy, że wartości NULL mają specjalne znaczenie – podstawowe operacje matematyczne zachowują się inaczej niż na zwykłych liczbach. Podobnie jest z porównywaniem NULL ponieważ służy do tego specjalny operator (IS NULL). Istnieje jednak w SQL Server zmienna, której ustawienie pozwala porównywać wartości NULL za pomocą klasycznych operatorów ‘<>==’. Rozważmy następujące zapytanie:

select * from Persons WHERE FirstName is null;

Ustawiając zmienną ANSI_NULLS na OFF można wykorzystać do tego celu operator ‘=’:

SET ANSI_NULLS off
select * from Persons where FirstName=null

Powyższe dwa fragmenty kodu działają identycznie. Bez ustawienia ANSI_NULLS na off zapytanie zwróciłoby zero wierszy ponieważ standardowo do porównywania NULL’i służy wyłącznie operator IS NULL.

W praktyce jednak uważam, że eleganckim rozwiązaniem jest wykorzystywanie is null zamiast kombinowania ze zmienną ANSI_NULLS. Post miał na celu wyłącznie pokazanie alternatywy :).

One thought on “Porównywanie wartości NULL w SQL Server”

Leave a Reply

Your email address will not be published.