Heim >Datenbank >MySQL-Tutorial >Ignoriert die „WHERE'-Klausel von SQL Server nachfolgende Leerzeichen in String-Vergleichen?
SQL WHERE-Klausel: Nachgestellte Leerzeichen beim Wertabgleich
In SQL Server weisen Zeichenfolgenvergleiche mit der WHERE-Klausel ein eigenartiges Verhalten auf, das zu Problemen führen kann zu unerwarteten Ergebnissen. Insbesondere ignoriert der Gleichheitsoperator (=) nachgestellte Leerzeichen, wenn Vergleiche durchgeführt werden.
Stellen Sie sich das folgende Szenario vor:
select '"' + ZoneReference + '"' as QuotedZoneReference from Zone where ZoneReference = 'WF11XU'
Überraschenderweise liefert die Abfrage das folgende Ergebnis:
"WF11XU "
Erklärung:
Dieses Verhalten stammt aus der SQL-92-Spezifikation, die vorschreibt, dass Zeichenfolgen in Vergleichsoperationen mit Leerzeichen aufgefüllt werden sollten, um sicherzustellen, dass sie die gleiche Länge haben vor dem Vergleich. In diesem Fall wird der ZoneReference-Wert in der WHERE-Klausel ('WF11XU') mit einem nachgestellten Leerzeichen aufgefüllt, was zu einer Übereinstimmung mit dem Wert in der Tabelle führt.
Auswirkungen:
Diese Auffüllung kann zu Problemen führen, wenn versucht wird, exakte Werte abzugleichen, die möglicherweise nachgestellte Leerzeichen enthalten. Wenn der beabsichtigte ZoneReference-Wert beispielsweise tatsächlich „WF11XU“ ohne das nachgestellte Leerzeichen wäre, würde die Abfrage keine Ergebnisse zurückgeben.
Lösungen:
Um genaue Übereinstimmungen sicherzustellen, Ziehen Sie die folgenden Lösungen in Betracht:
Das obige ist der detaillierte Inhalt vonIgnoriert die „WHERE'-Klausel von SQL Server nachfolgende Leerzeichen in String-Vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!