Der NULL-Wert in SQL
SQL kennt 3 Zustände eines Vergleichs: WAHR, FALSCH und NULL. Die 3-Wertigkeit ist bei Anfrage immer im Hinterkopf zu behalten. Der NULL Wert bedeutet aus Sicht der Datenbank also weder WAHR noch FALSCH, sondern UNBEKANNT / FEHLENDER WERT.
Folgendes Beispiel soll dies illustrieren:
In der Tabelle Mitarbeiter kann das Feld „AUSTRITTSDATUM“ den Wert NULL annehmen, sofern der Mitarbeiter noch bei uns beschäftigt ist.
Die Abfrage SELECT COUNT(*) FROM MITARBEITER bringt 100 Sätze zurück . Das sind alle Mitarbeiter der Firma
Die Anfrage SELECT COUNT() FROM MITARBEITER WHERE AUSTRITTSDATUM < ‚2000-12-31‘ bringt 20 Sätze zurück.
Die Anfrage SELECT COUNT(*) FROM MITARBEITER WHERE AUSTRITTSDATUM >= ‚2000-12-31‘ bringt 10 Sätze zurück.
Das heisst, dass Datensätze mit dem Wert NULL im Feld AUSTRITTSDATUM nochmal separat abgefragt werden müssen, um auf die Gesamtzahl der 100 Sätze zu kommen.
Beispiel Aggregat-Funktionen:
Die Aggregatfunktionen AVG(), SUM() ignorieren NULL Werte
Die Abfrage SELECT SUM(UMSATZ) / COUNT(*) FROM VERKÄUFE kann ein abweichendes Ergebnis von
der Abfrage SELECT AVG(UMSATZ) FROM VERKÄUFE bringen …
…wenn bei einigen Sätzen der Umsatz = NULL ist
Abfrage von NULL-Werten
NULL Werte können nicht über die üblichen Operatoren =, <>, usw. abgefragt werden. Hierfür gibt es spezielle Vergleichsoperatoren:
IS NULL gibt WAHR zurück, wenn der Wert des Feldes NULL ist
IS NOT NULL gibt WAHR zurück, wenn der Wert des Feldes NICHT NULL ist.
Wann sind NULL Werte zulässig?
Bei der Anlage einer Tabelle ist zu entscheiden, ob für einen Spalte NULL-Werte zulässig sind. D.h. es ist bereits eine fachliche Frage im Rahmen des Datenbank-Design, ob eine Spalte „unbekannte“ Werte enthalten können soll, oder ob ggf. geeignete DEFAULT Werte (z.B. ‚‘, oder * bei Textfeldern) verwendet werden können.