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))
In vielen SQL-Implementierungen, wie z. B. Informix 11.5, a Eine einfachere Bedingung reicht aus:
WHERE (A <> B)
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:
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!