Mens de fleste applikationer vil have en eller anden form for serverside- eller endda klientsideteknologi, der kan bruges til at bortfiltrere databaseforespørgselsresultater, som kan indeholde NULL
eller tomme værdier, ved at bruge et andet sprog, og den ekstra byrde ved at udføre kode er typisk dyrere for serveren og faktisk stort set unødvendig.
I stedet vil vi nedenfor kort udforske, hvordan man bruger selve MySQL-motoren til at udføre denne opgave, idet vi kun griber de poster, du ønsker, mens vi ekskluderer dem med irriterende NULL
kolonner i blandingen.
ER IKKE NULL sammenligningsoperatør
Langt den enkleste og mest ligetil metode til at sikre, at en bestemt kolonnes resultatsæt ikke indeholder NULL
værdier er at bruge IS NOT NULL
sammenligningsoperatør.
For eksempel, hvis vi ønsker at vælge alle poster i vores bøger
tabel, hvor primary_author
kolonne er ikke NULL
, kan forespørgslen se sådan ud:
VÆLG primær_forfatter, publiceringsdato, titelFRA bøger, HVOR primær_forfatter IKKE ER NULL;
Da Ikke ER NULL
opfører sig ligesom enhver anden komparator, den kan kombineres med andre WHERE
klausuler for at filtrere resultater yderligere, ligesom hvis du brugte =
, > ,
<
, LIKE
og andre standard sammenligningsoperatører.
Filtrering af NULL fra flere kolonner
I nogle tilfælde ønsker du måske at hente resultater, hvor nej NULL
værdier er til stede på tværs af flere kolonner. For eksempel har vi nogle poster i bøgerne
tabel:
id | titel | primær_forfatter | offentliggjort_dato1 | Hobbitten | Tolkien | 21-09-19372 | Silmarillion | Tolkien | 15-09-19773 | Vindens navn | Rothfuss | 27-03-20074 | Den vise mands frygt | Rothfuss | 03-01-2015 | Dørene af sten | Rothfuss | NULL6 | Beowulf | NULL | 01-01-1000
Bemærk, at Stendørene (id 5
) er upubliceret og derfor published_date
er NULL
. Tilsvarende Beowulf (id 6
) – det berømte oldengelske episke digt – har ingen kendt forfatter, så primary_author
er NULL
.
I dette tilfælde vil vi muligvis forespørge efter resultater, der kun indeholder de første fire poster, og derved ekskluderer de sidste to poster, som har NULL
værdier i enten primary_author
eller publiceret_dato
. Dette kan udføres med denne simple sætning ved hjælp af AND
med flere sammenligningsoperatorer:
VÆLG primær_forfatter, publiceringsdato, titelFRA bøger WHERE (primær_forfatter ER IKKE NULL OG publiceringsdato ER IKKE NULL);
Bemærk:Parenteserne er ikke påkrævet, men det er god praksis at vedlægge grupperede komparatorer for bedre læsbarhed.
Der har du det; en simpel sammenligningsoperator, der kan bruges til at filtrere enhver NULL
fra værdier i dine optegnelser.