Heim > Datenbank > MySQL-Tutorial > Warum reicht „A B' für Ungleichheitsvergleiche mit Nullable-Spalten in SQL aus?

Warum reicht „A B' für Ungleichheitsvergleiche mit Nullable-Spalten in SQL aus?

Susan Sarandon
Freigeben: 2025-01-03 04:05:38
Original
680 Leute haben es durchsucht

Why Does `A  B` Suffice for Inequality Comparisons with Nullable Columns in SQL?

Null-Ungleichheitsparadoxon gelöst

In SQL erfordert das Testen der Gleichheit zwischen zwei nullbaren Spalten zusätzliche Prüfungen, um den Fall zu behandeln, in dem beide Spalten NULL sind. Dies liegt daran, dass NULL einen unbekannten Wert darstellt und nicht direkt mit einem anderen NULL-Wert verglichen werden kann. Beim Testen der Ungleichheit kann jedoch ein einfacherer Ansatz verwendet werden.

Ungleichheit mit Nullable-Spalten

Anfangs wurde davon ausgegangen, dass das Testen der Ungleichheit zwischen Nullable-Spalten einen komplizierten Vorgang erfordern würde Bedingung:

WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
Nach dem Login kopieren

In vielen SQL-Implementierungen, wie z. B. Informix 11.5, a Eine einfachere Bedingung reicht aus:

WHERE (A <> B)
Nach dem Login kopieren

Verstehen des Verhaltens

Dieses Verhalten ergibt sich aus der ternären Logik, bei der NULL als unbekannter Wert behandelt wird. Betrachten Sie die folgenden Fälle:

  • Wenn sowohl A als auch B bekannt sind (nicht NULL), ist der Ungleichheitstest unkompliziert.
  • Wenn entweder A oder B NULL ist, ist das Ergebnis unbestimmt. In der ternären Logik ist ein unbekannter Wert keinem anderen Wert gleich, auch nicht sich selbst. Daher gibt der Ausdruck (A = B) „unbekannt“ zurück, wenn einer der Operanden NULL ist.
  • Wenn sowohl A als auch B NULL sind, ist der Ungleichheitstest ebenfalls unbekannt. Dies liegt daran, dass NULL weder gleich noch ungleich sich selbst ist.

Vereinfachte Ungleichheitsbedingung

Somit ist die vereinfachte (A <> B) Die Bedingung funktioniert ordnungsgemäß, da nicht versucht wird, NULL-Werte direkt zu vergleichen. Stattdessen basiert es auf dem ternären Logikprinzip, dass unbekannte Werte mit nichts gleich sind.

Schlussfolgerung

Beim Testen der Ungleichheit zwischen nullbaren Spalten reicht es aus, die zu verwenden einfache Bedingung (A <> B). Dies liegt daran, dass NULL als unbekannter Wert nicht direkt mit anderen Werten, einschließlich sich selbst, verglichen werden kann. Die Verwendung des ternären Logikansatzes, bei dem NULL als unbekannt betrachtet wird, vereinfacht den Ausdruck und gewährleistet genaue Ergebnisse.

Das obige ist der detaillierte Inhalt vonWarum reicht „A B' für Ungleichheitsvergleiche mit Nullable-Spalten in SQL 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