Medan de flesta applikationer kommer att ha någon form av server- eller till och med klientsida-teknologi som kan användas för att filtrera bort databasfrågeresultat som kan innehålla NULL
eller tomma värden, med ett annat språk och den extra bördan med att exekvera kod är vanligtvis dyrare för servern och i själva verket till stor del onödig.
Istället nedan kommer vi kort att utforska hur man använder själva MySQL-motorn för att utföra denna uppgift, bara ta tag i poster som du önskar samtidigt som de utesluter de med irriterande NULL
kolumner i mixen.
ÄR INTE NULL jämförelseoperatör
Den överlägset enklaste och enklaste metoden för att säkerställa att en viss kolumns resultatuppsättning inte innehåller NULL
värden är att använda IS NOT NULL
jämförelseoperatör.
Till exempel, om vi vill välja alla poster i våra böcker
tabell där primary_author
kolumnen är inte NULL
, kan frågan se ut så här:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
primary_author IS NOT NULL;
Eftersom INTE ÄR NULL
beter sig precis som alla andra komparatorer, den kan kombineras med andra WHERE
satser för att ytterligare filtrera resultat, precis som om du använde =
, > ,
<
, GILLA
och andra standardjämförelseoperatörer.
Filtrera NULL från flera kolumner
I vissa fall kanske du vill hämta resultat där nej NULL
värden finns i flera kolumner. Till exempel har vi några poster i böckerna
tabell:
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
Lägg märke till att Stenens dörrar (id 5
) är opublicerad och därför publiceringsdatum
är NULL
. På samma sätt, Beowulf (id 6
) – den berömda fornengelska episka dikten – har ingen känd författare, så primary_author
är NULL
.
I det här fallet kanske vi vill fråga efter resultat som bara innehåller de första fyra poster, och därigenom utesluter de två sista posterna som har NULL
värden i antingen primary_author
eller publicerad_datum
. Detta kan utföras med denna enkla sats med AND
med flera jämförelseoperatorer:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
(
primary_author IS NOT NULL
AND
published_date IS NOT NULL
);
Obs! Paranteserna krävs inte men det är bra att bifoga grupperade komparatorer för bättre läsbarhet.
Där har du det; en enkel jämförelseoperator som kan användas för att filtrera bort alla NULL
värden i dina register.