Heim > Datenbank > MySQL-Tutorial > Warum schlägt != beim Vergleich mit NULL in SQL fehl?

Warum schlägt != beim Vergleich mit NULL in SQL fehl?

Linda Hamilton
Freigeben: 2025-01-21 14:51:08
Original
189 Leute haben es durchsucht

Why Does != Fail When Comparing to NULL in SQL?

SQLs !=-Operator und das NULL-Rätsel

Der

-Operator (ungleich) von !=SQL stellt beim Umgang mit NULL-Werten eine besondere Herausforderung dar. Während es Nicht-NULL-Werte effektiv vergleicht, ist sein Verhalten mit NULL nicht intuitiv.

Das Problem mit != NULL

Bedenken Sie Folgendes:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != NULL; -- Returns 0 rows
SELECT * FROM MyTable WHERE MyColumn  NULL; -- Also returns 0 rows</code>
Nach dem Login kopieren

Diese Abfragen, die darauf abzielen, Zeilen zu finden, in denen MyColumn nicht NULL ist, geben überraschenderweise leere Ergebnismengen zurück. Das ist kein Fehler; es liegt in der Natur von NULL. NULL stellt keinen Wert dar; es stellt das Fehlen eines Werts dar. Daher ergibt der Vergleich eines Werts mit NULL unter Verwendung von != oder = immer UNKNOWN, nicht TRUE oder FALSE.

Die Lösung: IS NOT NULL

Um Nicht-NULL-Werte genau zu identifizieren, verwenden Sie das Prädikat IS NOT NULL:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn IS NOT NULL; -- Returns the expected rows</code>
Nach dem Login kopieren

IS NOT NULL (und sein Gegenstück IS NULL) sind speziell für die Verarbeitung von NULL-Werten in SQL-Vergleichen konzipiert.

Vergleich mit Nicht-NULL-Werten

Der !=-Operator funktioniert beim Vergleich mit Nicht-NULL-Werten wie erwartet:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != 'ValueX'; -- Returns rows where MyColumn is not 'ValueX'</code>
Nach dem Login kopieren

Schlüssel zum Mitnehmen

Genaue SQL-Abfragen mit NULL-Werten erfordern die Verwendung von IS NOT NULL und IS NULL. Vermeiden Sie die Verwendung von != oder = für NULL-Vergleiche, um unerwartete Ergebnisse zu vermeiden. Verwenden Sie diese dedizierten Prädikate für die zuverlässige Verarbeitung von NULL in Ihren SQL-Anweisungen.

Das obige ist der detaillierte Inhalt vonWarum schlägt != beim Vergleich mit NULL in SQL fehl?. 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