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.