Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wybrać rekordy bez wartości NULL w MySQL?

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kroki instalacji Mysql56 na linuksie

  2. Jak zaplanować procedurę składowaną w MySQL

  3. Usuń dane z bazy danych MySQL

  4. Dane binarne w MySQL

  5. Polecenia MySQL:Ściągawka z popularnych zapytań MySQL