Heim >Datenbank >MySQL-Tutorial >Warum gibt NULL = NULL in SQL Server „False' zurück?
Verstehen, warum NULL = NULL in SQL Server falsch ist
In SQL Server wird eine WHERE
-Klauselbedingung wie nullParam = NULL
als falsch ausgewertet. Dies mag kontraintuitiv erscheinen, da NULL
häufig auf fehlende Daten hinweist. Der Schlüssel liegt darin, die SQL Server-Interpretation von NULL
.
NULL
stellt nicht einfach fehlende Daten dar; es stellt einen unbekannten oder nicht existierenden Wert dar. Daher ist der Vergleich zweier NULL
-Werte von Natur aus unbestimmt. Wir können nicht definitiv sagen, ob zwei Unbekannte gleich oder ungleich sind. Diese Unsicherheit führt zu einer falschen Bewertung.
Dies entspricht dem ANSI SQL-92-Standard. Standardmäßig arbeitet SQL Server mit ANSI_NULLS ON
und erzwingt dieses Verhalten. Das Setzen von ANSI_NULLS OFF
ändert jedoch das Ergebnis des Vergleichs in „true“.
Betrachten Sie dieses Beispiel:
<code class="language-sql">SET ANSI_NULLS OFF; IF NULL = NULL PRINT 'true'; ELSE PRINT 'false'; SET ANSI_NULLS ON; IF NULL = NULL PRINT 'true'; ELSE PRINT 'false';</code>
Mit ANSI_NULLS OFF
ist die Ausgabe „wahr“. Mit ANSI_NULLS ON
(Standardeinstellung) ist die Ausgabe „false“, was zeigt, wie diese Einstellung die Verarbeitung von NULL
-Vergleichen durch SQL Server steuert. Die Verwendung von IS NULL
ist der richtige Ansatz zur Überprüfung auf Nullwerte.
Das obige ist der detaillierte Inhalt vonWarum gibt NULL = NULL in SQL Server „False' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!