NULL w SQL oznacza brak wartości w polu tabeli. Nie jest tym samym co 0, pusty tekst '' ani spacja. Oznacza, że dana informacja nie została podana lub jest nieznana.
Jak działa NULL w warunkach?
Ważna zasada: wartości NULL nie porównuje się zwykłymi operatorami = ani !=.
Niepoprawne lub nieskuteczne filtrowanie:
SELECT * FROM zwierzeta WHERE szczepienie = NULL;
Poprawne sprawdzanie braku wartości:
SELECT * FROM zwierzeta WHERE szczepienie IS NULL;
Poprawne sprawdzanie, że wartość istnieje:
SELECT * FROM zwierzeta WHERE szczepienie IS NOT NULL;
NULL a warunek z konkretną wartością
Jeżeli zapytanie zawiera warunek:
WHERE szczepienie = 2016
zostaną wybrane tylko rekordy, w których kolumna szczepienie ma dokładnie wartość 2016. Rekordy z NULL w tej kolumnie nie spełnią tego warunku.
Przykład:
SELECT imie
FROM zwierzeta
WHERE rodzaj = 2 AND szczepienie = 2016;
Zapytanie wybierze imiona zwierząt, które jednocześnie:
- mają
rodzaj = 2, - mają
szczepienie = 2016.
Jeżeli zwierzę ma rodzaj = 2, ale w kolumnie szczepienie znajduje się NULL, nie zostanie pokazane w wyniku.
Typowy błąd na egzaminie
Częsty błąd polega na traktowaniu NULL jak zwykłej wartości. W SQL NULL oznacza „nie wiadomo” lub „brak danych”, dlatego wymaga operatorów IS NULL i IS NOT NULL.