NULL-Werte

Ein NULL-Wert weist darauf hin, dass der Wert unbekannt ist. Ein NULL-Wert unterscheidet sich von einem leeren Wert oder dem Wert Null (0). NULL-Werte sind niemals identisch. Vergleiche zwischen zwei NULL-Werten oder zwischen einem NULL-Wert und einem anderen Wert geben ein nicht definiertes Ergebnis zurück, da der Wert jedes NULL-Werts unbekannt ist.

Durch NULL-Werte werden grundsätzlich unbekannte, nicht anwendbare oder solche Daten angegeben, die später hinzugefügt werden. Beispielsweise ist es möglich, dass der Anfangsbuchstabe des zweiten Vornamens eines Kunden noch nicht bekannt ist, wenn der Kunde eine Bestellung aufgibt.

Im folgenden Abschnitt sind Informationen zu NULL-Werten aufgeführt.

  • Um das Vorhandensein von NULL-Werten in einer Abfrage zu testen, verwenden Sie IS NULL oder IS NOT NULL in der WHERE-Klausel.

  • Wenn Abfrageergebnisse im SQL Server Management Studio-Code-Editor angezeigt werden, werden NULL-Werte im Resultset als NULL dargestellt.

  • NULL-Werte können in eine Spalte eingefügt werden, indem NULL explizit in einer INSERT- oder UPDATE-Anweisung angegeben wird, indem eine Spalte aus einer INSERT-Anweisung weggelassen wird oder indem beim Hinzufügen einer neuen Spalte zu einer vorhandenen Tabelle die ALTER TABLE-Anweisung verwendet wird.

  • NULL-Werte können nicht für Informationen verwendet werden, die für die Unterscheidung einer Zeile in einer Tabelle von einer anderen Zeile in einer Tabelle erforderlich sind, beispielsweise Primärschlüssel.

Sie können im Programmcode das Vorhandensein von NULL-Werten überprüfen, damit bestimmte Berechnungen nur in Zeilen mit gültigen Daten (Daten, die nicht den Wert NULL haben) ausgeführt werden. So ist es beispielsweise möglich, die Sozialversicherungsspalte in einem Bericht nur dann zu drucken, wenn die in der Spalte enthaltenen Daten nicht NULL sind. Das Entfernen von NULL-Werten beim Ausführen von Berechnungen kann wichtig sein, da bestimmte Berechnungen (beispielsweise eine Durchschnittsberechnung) ungenau sein können, wenn NULL-Spalten eingeschlossen werden.

Wenn es wahrscheinlich ist, dass NULL-Werte in Ihren Daten gespeichert werden, Sie dies aber vermeiden möchten, können Sie Abfragen und Datenänderungsanweisungen erstellen, die die NULL-Werte entweder entfernen oder sie in andere Werte umwandeln.

Wichtiger HinweisWichtig

Sie sollten möglichst wenige NULL-Werte verwenden, um den Wartungsaufwand und mögliche Auswirkungen auf vorhandene Abfragen oder Berichte so gering wie möglich zu halten. Planen Sie die Abfragen und Datenänderungsanweisungen so, dass NULL-Werte minimale Auswirkungen haben.

Sind NULL-Werte in den Daten vorhanden, ist es möglich, dass logische Operatoren und Vergleichsoperatoren nicht nur TRUE oder FALSE zurückgeben, sondern ein drittes Ergebnis: UNKNOWN. Diese Notwendigkeit einer dreiwertigen Logik ist die Ursache für zahlreiche Anwendungsfehler. In den folgenden Tabellen wird dargestellt, welche Auswirkungen die Einführung von Vergleichen zwischen NULL-Werten haben kann.

Die folgende Tabelle zeigt die Ergebnisse des Anwendens eines AND-Operators auf zwei boolesche Operanden.

AND

TRUE

UNKNOWN

FALSE

TRUE

TRUE

UNKNOWN

FALSE

UNKNOWN

UNKNOWN

UNKNOWN

FALSE

FALSE

FALSE

FALSE

FALSE

Die folgende Tabelle zeigt die Ergebnisse des Anwendens eines OR-Operators auf zwei boolesche Operanden.

OR

TRUE

UNKNOWN

FALSE

TRUE

TRUE

TRUE

TRUE

UNKNOWN

TRUE

UNKNOWN

UNKNOWN

FALSE

TRUE

UNKNOWN

FALSE

Die folgende Tabelle zeigt, wie der NOT-Operator das Ergebnis eines booleschen Operators negiert oder umkehrt.

Boolescher Ausdruck, auf den der NOT-Operator angewendet wird

Auswertungsergebnis

TRUE

FALSE

UNKNOWN

UNKNOWN

FALSE

TRUE

Der ISO-Standard verwendet die Schlüsselwörter IS NULL und IS NOT NULL, um zu testen, ob NULL-Werte vorhanden sind.

Boolescher Ausdruck, auf den der IS NULL-Operator

angewendet wird

Auswertungsergebnis

Boolescher Ausdruck, auf den der IS NOT NULL-Operator angewendet wird

Auswertungsergebnis

TRUE

FALSE

TRUE

TRUE

NULL

TRUE

NULL

FALSE

FALSE

FALSE

FALSE

TRUE

Transact-SQL bietet zudem eine Erweiterung für das Verarbeiten von NULL-Werten. Ist die Option ANSI_NULLS auf OFF festgelegt, werden Vergleiche zwischen NULL-Werten, beispielsweise NULL = NULL, zu TRUE ausgewertet. Vergleiche zwischen NULL und einem beliebigen Datenwert werden zu FALSE ausgewertet.