Heim >Datenbank >MySQL-Tutorial >Warum gibt NULL = NULL in SQL Server „False' zurück?

Warum gibt NULL = NULL in SQL Server „False' zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-20 23:18:10497Durchsuche

Why Does NULL = NULL Return False in SQL Server?

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.

zu verstehen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn