sql >> Databáze >  >> RDS >> Mysql

Jak vybrat záznamy bez hodnot NULL v MySQL

Zatímco většina aplikací bude mít nějakou formu technologie na straně serveru nebo dokonce na straně klienta, kterou lze použít k odfiltrování výsledků databázových dotazů, které mohou obsahovat NULL nebo prázdné hodnoty, použití jiného jazyka a tato další zátěž související s prováděním kódu je pro server obvykle nákladnější a ve skutečnosti z velké části zbytečná.

Namísto toho níže stručně prozkoumáme, jak k provedení tohoto úkolu použít samotný engine MySQL, přičemž pořídíme pouze záznamy, které si přejete, a vyloučíme ty s otravným NULL sloupce v mixu.

NENÍ NULL operátor porovnání

Zdaleka nejjednodušší a nejpřímější metoda, jak zajistit, aby sada výsledků konkrétního sloupce neobsahovala NULL hodnoty je použít IS NOT NULL operátor porovnání.

Například pokud chceme vybrat všechny záznamy v našich books tabulka, kde je primary_author sloupec není NULL , dotaz může vypadat takto:

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;

Protože IS NOT NULL chová se stejně jako jakýkoli jiný komparátor, lze jej kombinovat s dalšími WHERE klauzule k dalšímu filtrování výsledků, stejně jako byste používali = , > , < , LIKE a další standardní porovnávací operátory.

Filtrování hodnoty NULL z více sloupců

V některých případech můžete chtít načíst výsledky, kde ne NULL hodnoty jsou přítomny ve více sloupcích. Některé záznamy máme například v books tabulka:

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

Vezměte na vědomí, že The Doors of Stone (id 5 ) není publikován, a proto je published_date je NULL . Podobně Beowulf (id 6 ) – slavná staroanglická epická báseň – nemá známého autora, takže primary_author je NULL .

V tomto případě můžeme chtít dotaz na výsledky obsahující pouze první čtyři záznamy, čímž se vyloučí poslední dva záznamy, které mají NULL hodnoty v primary_author nebo published_date . To lze provést pomocí tohoto jednoduchého příkazu pomocí AND s více operátory porovnání:

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  (
    primary_author IS NOT NULL
  AND
    published_date IS NOT NULL
  );

Poznámka:Závorky nejsou povinné, ale pro lepší čitelnost je dobré vložit seskupené komparátory.

Tady to máš; jednoduchý operátor porovnání, který lze použít k odfiltrování všech NULL hodnoty ve vašich záznamech.


  1. Vzory šablon a modifikátory pro formátování data/času v PostgreSQL

  2. Jak provést úplné vnější spojení v MySQL

  3. Připojte HP-UX Itanium k SQL Server

  4. Nejlepší způsob, jak uložit obrázky, které pocházejí ze serveru v Androidu