Hoewel de meeste applicaties een of andere vorm van server-side of zelfs client-side technologie zullen hebben die kan worden gebruikt om databasequeryresultaten uit te filteren die NULL
kunnen bevatten of lege waarden, een andere taal gebruiken en die extra last van het uitvoeren van code is doorgaans duurder voor de server en in feite grotendeels onnodig.
In plaats daarvan zullen we hieronder kort onderzoeken hoe we de MySQL-engine zelf kunnen gebruiken om deze taak uit te voeren, waarbij we alleen records pakken die u wenst en die met vervelende NULL
uitsluiten kolommen in de mix.
IS GEEN NULL vergelijkingsoperator
Veruit de eenvoudigste en meest rechttoe rechtaan methode om ervoor te zorgen dat de resultatenset van een bepaalde kolom geen NULL
bevat waarden is om de IS NOT NULL
. te gebruiken vergelijkingsoperator.
Als we bijvoorbeeld alle records in onze books
willen selecteren, tabel waarin de primary_author
kolom is niet NULL
, kan de zoekopdracht er als volgt uitzien:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
primary_author IS NOT NULL;
Aangezien IS NOT NULL
gedraagt zich net als elke andere comparator, het kan worden gecombineerd met andere WHERE
clausules om de resultaten verder te filteren, net alsof u =
. gebruikt , >
, <
, LIKE
en andere standaard vergelijkingsoperatoren.
NULL filteren uit meerdere kolommen
In sommige gevallen wilt u misschien resultaten ophalen waar nee NULL
waarden zijn aanwezig in meerdere kolommen. We hebben bijvoorbeeld enkele records in de books
tafel:
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
Houd er rekening mee dat The Doors of Stone (id 5
) is niet gepubliceerd en daarom is de published_date
is NULL
. Evenzo, Beowulf (id 6
) – het beroemde Oud-Engelse epische gedicht – heeft geen bekende auteur, dus primary_author
is NULL
.
In dit geval willen we misschien zoeken naar resultaten die alleen de eerste vier . bevatten records, waardoor de laatste twee records met NULL
. worden uitgesloten waarden in een van beide primary_author
of published_date
. Dit kan worden uitgevoerd met deze eenvoudige instructie met behulp van AND
met meerdere vergelijkingsoperatoren:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
(
primary_author IS NOT NULL
AND
published_date IS NOT NULL
);
Opmerking:de haakjes zijn niet vereist, maar het is een goede gewoonte om gegroepeerde vergelijkers in te sluiten voor een betere leesbaarheid.
Daar heb je het; een eenvoudige vergelijkingsoperator die kan worden gebruikt om alle NULL
. uit te filteren waarden in uw administratie.