Heim > Datenbank > MySQL-Tutorial > Warum gibt „NULL = NULL' in SQL Server „False' zurück (und wie wirkt sich „ansi_nulls' darauf aus)?

Warum gibt „NULL = NULL' in SQL Server „False' zurück (und wie wirkt sich „ansi_nulls' darauf aus)?

Barbara Streisand
Freigeben: 2025-01-20 23:09:09
Original
493 Leute haben es durchsucht

Why `NULL = NULL` is False in SQL Server (and the `ansi_nulls` Setting)

Verstehen, warum NULL = NULL in SQL Server „False“ zurückgibt

Die Verarbeitung von NULL-Werten durch SQL Server führt oft zu unerwarteten Ergebnissen. Der =-Operator gibt beim Vergleich von nullfähigen Spalten <code>false</code> zurück, da NULL einen unbekannten oder fehlenden Wert angibt.

Eine WHERE-Klauselbedingung wie nullParam = NULL ergibt immer <code>false</code>. Dies liegt daran, dass es unmöglich ist, die Gleichheit zwischen zwei unbekannten Größen definitiv zu bestätigen.

Der SQL-92-Standard schreibt dieses Verhalten vor: NULL = NULL ist weder wahr noch falsch; es ist undefiniert.

Die Auswirkungen der ansi_nulls Einstellung

Das Verhalten ändert sich je nach ansi_nullsEinstellung dramatisch. Wenn ansi_nulls auf OFF gesetzt ist, ergibt NULL = NULL überraschenderweise <code>true</code>. Dies wird unten demonstriert:

Codebeispiel:

<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>
Nach dem Login kopieren

Ausgabe:

Mit ansi_nulls OFF:

<code>true</code>
Nach dem Login kopieren

Mit ansi_nulls ON:

<code>false</code>
Nach dem Login kopieren

Best Practices für den Umgang mit NULL-Werten

Aufgrund dieser Variabilität ist es wichtig, die ansi_nulls-Einstellung zu kennen, wenn Sie mit NULL-Vergleichen arbeiten. Um Mehrdeutigkeiten zu vermeiden, verwenden Sie bei der Suche nach IS NULL-Werten immer IS NOT NULL und NULL. Dies gewährleistet unabhängig von der ansi_nulls-Einstellung ein konsistentes und vorhersehbares Verhalten. Dies ist der empfohlene Ansatz für zuverlässigen SQL-Code.

Das obige ist der detaillierte Inhalt vonWarum gibt „NULL = NULL' in SQL Server „False' zurück (und wie wirkt sich „ansi_nulls' darauf aus)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage