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.