NULLen haben ein besonderes Verhalten:Wenn Sie irgendetwas mit NULL vergleichen, erhalten Sie ein NULL , was etwas anderes als false ist oder 0 . Es bedeutet "unbekannt".
Nehmen Sie zum Beispiel diese Tabelle:
user_id | gender
------------------
1 | NULL
2 | 'M'
3 | 'F'
4 | 'F'
SELECT * FROM mytable WHERE gender = 'M' wird wie erwartet 1 Zeile zurückgeben
SELECT * FROM mytable WHERE gender != 'M' gibt 2 Zeilen zurück, NICHT 3 Zeilen.
SELECT * FROM mytable WHERE gender != 'M' OR gender IS NULL gibt die erwarteten 3 Zeilen zurück.
Bearbeiten:Verwenden Sie für einige Anwendungen 0 (oder, Gott bewahre, eine andere "magische Zahl") anstelle von NULL ist nicht einmal ratsam (Einheiten oder genaue Werte sind in diesem Beispiel nicht 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 der NULL am 6. Januar bedeutet "Wert unbekannt" - vielleicht, weil die Temperatur so niedrig war, dass die Thermometersonde nicht mehr reagierte. Es hat jedoch eine völlig andere Bedeutung als der 3. Januar, als die Temperatur 0 war , also 0 Grad.
Außerdem verhalten sich NULLen, wie @Bill Karwin erwähnt, speziell in Aggregatfunktionen (COUNT ,SUM ,AVG usw.):Berechnung von AVG(Temperature) auf die obigen Daten würde Ihnen -14.5 geben , da die NULL-Zeile ignoriert wird.