NULL'er har speciel adfærd:Hvis du sammenligner noget med en NULL, får du en NULL tilbage , som er noget andet end false eller 0 . Det betyder "ukendt".
Tag for eksempel denne tabel:
user_id | gender
------------------
1 | NULL
2 | 'M'
3 | 'F'
4 | 'F'
SELECT * FROM mytable WHERE gender = 'M' returnerer 1 række som forventet
SELECT * FROM mytable WHERE gender != 'M' returnerer 2 rækker, IKKE 3 rækker.
SELECT * FROM mytable WHERE gender != 'M' OR gender IS NULL returnerer de forventede 3 rækker.
Rediger:For nogle programmer, brug 0 (eller, gud forbyde, et andet "magisk tal") i stedet for NULL er ikke engang tilrådeligt (enheder eller nøjagtige værdier er ikke relevante i dette eksempel):
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
Her er NULL den 6. januar betyder "værdi ukendt" - måske fordi temperaturen var så lav, at termometersonden holdt op med at reagere. Det er dog en helt anden betydning end den 3. januar, hvor temperaturen var 0 , altså 0 grader.
Også, som @Bill Karwin nævner, opfører NULL'er sig specielt i aggregerede funktioner (COUNT ,SUM ,AVG osv.):beregner AVG(Temperature) på ovenstående data ville give dig -14.5 , da rækken NULL ignoreres.