Probleem:
U wilt records vinden met NULL in een kolom.
Voorbeeld:
Onze database heeft een tabel met de naam children
met gegevens in vier kolommen:id
, first_name
, middle_name
, en last_name
.
id | voornaam | middle_name | achternaam |
---|---|---|---|
1 | Jan | Carl | Jackson |
2 | Tom | NULL | Thomson |
3 | Lisa | Alice | NULL |
4 | Anna | NULL | Smith |
Laten we de id, voornaam en achternaam zoeken van kinderen zonder tweede naam (NULL in kolom middle_name
). We gebruiken hiervoor de IS NULL-operator.
Oplossing:
SELECT id, first_name, last_name FROM children WHERE middle_name IS NULL;
Dit is het resultaat:
id | voornaam | achternaam |
---|---|---|
2 | Tom | Thomson |
4 | Anna | Smith |
Dit retourneert alleen records met NULL in middle_name
, dus Tom en Anne zijn aanwezig, maar niet John en Lisa die een tweede naam hebben.
Discussie:
Gebruik de IS NULL
operator in een voorwaarde met WHERE om records met NULL in een kolom te vinden. U kunt natuurlijk ook een willekeurige uitdrukking gebruiken in plaats van een naam van een kolom en controleren of deze NULL retourneert. Niets meer dan de naam van een kolom en de operator IS NULL is nodig (in ons voorbeeld middle_name IS NULL
). Zet deze voorwaarde in de WHERE-component om rijen te filteren (in ons voorbeeld WHERE middle_name IS NULL
). Als de voorwaarde waar is, slaat de kolom een NULL op en wordt deze rij geretourneerd. Hierboven retourneert de query slechts twee records met kinderen Tom en Anne, die geen middelste namen hebben, dus de kolom middle_name
slaat NULL op.