Podczas gdy większość aplikacji będzie miała jakąś formę technologii po stronie serwera lub nawet po stronie klienta, która może być użyta do odfiltrowania wyników zapytań do bazy danych, które mogą zawierać NULL lub puste wartości, przy użyciu innego języka, a dodatkowe obciążenie związane z wykonywaniem kodu jest zazwyczaj bardziej kosztowne dla serwera i w rzeczywistości w dużej mierze niepotrzebne.
Zamiast tego poniżej krótko omówimy, jak używać samego silnika MySQL do wykonania tego zadania, pobierając tylko pożądane rekordy, wykluczając te z nieznośnym NULL kolumny w miksie.
Operator porównania NIE JEST NULL
Zdecydowanie najprostsza i najprostsza metoda zapewniająca, że zestaw wyników konkretnej kolumny nie zawiera NULL wartościami jest użycie IS NOT NULL operator porównania.
Na przykład, jeśli chcemy zaznaczyć wszystkie rekordy w naszych książkach tabela, w której primary_author kolumna nie jest NULL zapytanie może wyglądać tak:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
primary_author IS NOT NULL;
Ponieważ NIE JEST NULL zachowuje się jak każdy inny komparator, może być łączony z innymi GDZIE klauzule do dalszego filtrowania wyników, tak jakbyś używał = , > , < , LIKE i inne standardowe operatory porównania.
Filtrowanie NULL z wielu kolumn
W niektórych przypadkach możesz chcieć pobrać wyniki, w których nie NULL wartości są obecne w wielu kolumnach. Na przykład mamy kilka rekordów w książkach tabela:
id | title | primary_author | published_date
1 | The Hobbit | Tolkien | 09-21-1937
2 | The Silmarillion | Tolkien | 09-15-1977
3 | The Name of the Wind | Rothfuss | 03-27-2007
4 | The Wise Man's Fear | Rothfuss | 03-01-2011
5 | The Doors of Stone | Rothfuss | NULL
6 | Beowulf | NULL | 01-01-1000
Zwróć uwagę, że Drzwi z kamienia (id 5 ) jest nieopublikowany i dlatego data_publikacji jest NULL . Podobnie Beowulf (id 6 ) – słynny staroangielski poemat epicki – nie ma znanego autora, więc primary_author jest NULL .
W takim przypadku możemy zapytać o wyniki zawierające tylko pierwsze cztery rekordy, wykluczając w ten sposób dwa ostatnie rekordy, które mają NULL wartości w primary_author lub data_publikacji . Można to zrobić za pomocą tej prostej instrukcji, używając AND z wieloma operatorami porównania:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
(
primary_author IS NOT NULL
AND
published_date IS NOT NULL
);
Uwaga:nawiasy nie są wymagane, ale dobrą praktyką jest umieszczanie zgrupowanych elementów porównawczych dla lepszej czytelności.
Masz to; prosty operator porównania, którego można użyć do odfiltrowania wszystkich NULL wartości w Twoich rejestrach.