Fragment kwerendy SQL zaprezentowany w ramce ma na celu uzyskanie
SELECT COUNT(*) FROM ... WHERE wartosc IS NULL
Funkcja COUNT(*) liczy wszystkie wiersze, które przeszły przez warunek WHERE. Warunek IS NULL przepuszcza tylko wiersze, w których w polu wartosc nie wpisano żadnej wartości. Wynikiem jest więc jedna liczba: ile rekordów ma puste pole wartosc. Brak wartości sprawdza się wyłącznie operatorem IS NULL albo IS NOT NULL - porównanie = NULL nigdy nie jest prawdziwe, bo NULL oznacza wartość nieznaną. Takie zapytanie przydaje się do kontroli danych, np. do policzenia klientów bez numeru telefonu. Do zapamiętania: COUNT(*) liczy wiersze, a COUNT(wartosc) pomija puste pola. Warunek można łączyć z innymi przez AND.
Błędne odpowiedzi biorą się z pomylenia funkcji albo warunku. COUNT nie liczy kolumn - zawsze zwraca liczbę wierszy wyniku; liczbę kolumn opisuje struktura tabeli, a nie dane. Suma wartości wymagałaby funkcji SUM(wartosc), a tu w dodatku wybrano wiersze bez wartości, więc nie byłoby czego sumować. Odwrotny warunek, IS NOT NULL, policzyłby rekordy z wypełnionym polem - ten sam wynik dałoby COUNT(wartosc) bez klauzuli WHERE, bo funkcja z nazwą kolumny pomija puste pola. Słowo IS w warunku zostawia wyłącznie wiersze, w których pole wartosc jest puste, i to je liczy COUNT(*). Uwaga na pułapkę: porównanie ze znakiem równości i słowem NULL nie zadziała i zwróci zero wierszy, bo żadne porównanie z wartością nieznaną nie jest prawdziwe. Dlatego brak wartości sprawdza się wyłącznie słowami IS NULL.