Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

Pustka w katalogu: IS NULL

Nie każdy zwój ma wypełnione wszystkie rubryki. Czasem rok urodzenia autora jest nieznany, a wypożyczona książka nie została jeszcze zwrócona. Tę pustkę - brak jakiejkolwiek wartości - w bazie danych nazywamy NULL.

NULL to nie zero!

Ważne, @name:

NULL
to nie to samo co liczba 0 ani pusty tekst
''
.
NULL
oznacza "tu nic nie ma, wartość nieznana". To jak pusta rubryka na zwoju, której nikt jeszcze nie wypełnił.

Dlaczego = NULL nie działa

Z powodu tej "nieznanej" natury

NULL
nie możemy porównać go zwykłym znakiem
=
. To zapytanie nie zadziała poprawnie:

1SELECT * FROM wypozyczenia
2WHERE data_zwrotu = NULL;

Biblioteka nie wie, czy "nieznane" równa się "nieznane", więc zawsze zwróci pustkę. Dlatego MySQL ma specjalne operatory.

IS NULL i IS NOT NULL

Aby sprawdzić, czy wartość jest pusta, używamy IS NULL:

1SELECT * FROM wypozyczenia
2WHERE data_zwrotu IS NULL;

To znaczy: "Wypożyczenia, które nie zostały jeszcze zwrócone" - bo dopóki książka jest u czytelnika,

data_zwrotu
pozostaje pusta.

Aby znaleźć wiersze, które mają wartość, używamy IS NOT NULL:

1SELECT * FROM wypozyczenia
2WHERE data_zwrotu IS NOT NULL;

To znaczy: "Wypożyczenia już zwrócone" - bo

data_zwrotu
została wpisana.

Zapamiętaj prostą regułę: do NULL nigdy nie używamy

=
, tylko
IS NULL
lub
IS NOT NULL
. To jeden z najczęstszych błędów początkujących skrybów - Ty już go unikniesz!

Przejdź do CodeWorlds