NULL's hebben een speciaal gedrag:als je iets met een NULL vergelijkt, krijg je een NULL , wat iets anders is dan false of 0 . Het betekent "onbekend".
Neem bijvoorbeeld deze tabel:
user_id | gender
------------------
1 | NULL
2 | 'M'
3 | 'F'
4 | 'F'
SELECT * FROM mytable WHERE gender = 'M' retourneert 1 rij, zoals verwacht
SELECT * FROM mytable WHERE gender != 'M' geeft 2 rijen terug, NIET 3 rijen.
SELECT * FROM mytable WHERE gender != 'M' OR gender IS NULL geeft de verwachte 3 rijen terug.
Bewerken:voor sommige toepassingen gebruikt u 0 (of, God verhoede, nog een "magisch getal") in plaats van NULL is zelfs niet aan te raden (eenheden of exacte waarden zijn in dit voorbeeld niet relevant):
Date | Temperature
--------------------------
2010-01-01 | 10
2010-01-02 | 4
2010-01-03 | 0
2010-01-04 | -22
2010-01-05 | -45
2010-01-06 | NULL
2010-01-07 | -34
Hier, de NULL op 6 januari betekent "waarde onbekend" - misschien omdat de temperatuur zo laag was dat de thermometersonde niet meer reageerde. Het is echter een heel andere betekenis dan 3 januari, toen de temperatuur 0 was , dat wil zeggen, 0 graden.
Ook, zoals @Bill Karwin vermeldt, gedragen NULL's zich speciaal in geaggregeerde functies (COUNT ,SUM ,AVG etc.):berekenen van AVG(Temperature) op de bovenstaande gegevens zou je -14.5 , omdat de NULL-rij wordt genegeerd.