Reguły programisty

SQL Server

Jak SQL Server przetwarza NULL

Zwięzły opis sposobu przetwarzania nieznanych lub brakujących wartości w SQL Server

SQL Serverjob interview70-761

Przy porównywaniu dwóch istniejących wartości w SQL Server uzyskujemy dwa rezultaty: TRUE lub FALSE. Dla przykładu następujący skrypt:

wyświetli na ekranie 'FALSE'. W każdym przypadku ustawienia dowolnymi wartościami zmiennych @a i @b rezultat będzię prawdą lub fałszem oraz nigdy nie dojdzie do warunku ELSE.

Jednak w przypadkach, kiedy brakuje przy porównywaniu wartości ezultat porównania nie może zostać określony, wtedy oprócz TRUE lub FALSE możemy otrzymać NULL. Pokazują to poniższe dwa skrytpty:

lub:

Przykładowe wyniki porównań z NULL:

W przypadku filtrów zapytań, takich jak WHERE, ON i HAVING uzyskanie przy porównaniu z NULL nieokreślonych wartości jest tożsame z uzyskaniem FALSE. Oznacza to, że wartości porównywane z NULL przy teście [column_value] = NULL nie pojawią się w wyniku zapytania.

ORDER BY [column_name] ASC powoduje posortowanie wartości w ten sposób, że pola NULL znajdują się na początku. ORDER BY [column_name] DESC umiesza pola NULL na końcu.

DISTINCT traktuje NULL jako równe sobie, więc możliwe jest uzyskanie unikalnej wartości.

Dopuszczalne jest stosowanie NULL w ograniczeniach typu CHECK.
Tutorial statistics