NULL und UNKNOWN (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

NULL 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.

Beachten Sie folgende Hinweise zu NULL-Werten:

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

  • NULL-Werte können in eine Spalte eingefügt werden, indem NULL explizit in einer INSERT- oder UPDATE-Anweisung angegeben oder indem eine Spalte aus einer INSERT-Anweisung weggelassen 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, oder für Informationen, mit denen Zeilen verteilt werden, wie etwa Verteilungsschlüssel.

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. Logische Operatoren in einem booleschen Ausdruck, der UNKNOWN-Elemente enthält, geben UNKNOWN zurück, es sei denn, das Ergebnis des Operators hängt nicht vom UNKNOWN-Ausdruck ab. Die folgenden Tabellen enthalten Beispiele für dieses Verhalten.

Die folgende Tabelle zeigt die Ergebnisse der Anwendung eines AND-Operators auf zwei boolesche Ausdrücke, in denen ein Ausdruck UNKNOWN zurückgibt.

Ausdruck 1 Ausdruck 2 Ergebnis
true UNKNOWN UNKNOWN
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN FALSE

Die folgende Tabelle zeigt die Ergebnisse der Anwendung eines OR-Operators auf zwei boolesche Ausdrücke, in denen ein Ausdruck UNKNOWN zurückgibt.

Ausdruck 1 Ausdruck 2 Ergebnis
true UNKNOWN true
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN UNKNOWN

Siehe auch

AND (Transact-SQL)
OR (Transact-SQL)
NOT (Transact-SQL)
IS NULL (Transact-SQL)