Heim >Datenbank >MySQL-Tutorial >Warum stimmt meine SQL-Abfrage trotz Verwendung des Gleichheitsoperators mit einem nachgestellten Leerzeichen überein?

Warum stimmt meine SQL-Abfrage trotz Verwendung des Gleichheitsoperators mit einem nachgestellten Leerzeichen überein?

Susan Sarandon
Susan SarandonOriginal
2025-01-04 14:14:38159Durchsuche

Why Does My SQL Query Match with a Trailing Space Despite Using the Equality Operator?

Abgefangen durch nachgestellte Leerzeichen: Ein SQL-Vergleichsrätsel

Betrachten Sie die folgende SQL-Abfrage, bei der wir versuchen, einen Wert in der Zonentabelle abzugleichen :

select '"' + ZoneReference + '"' as QuotedZoneReference
from Zone
where ZoneReference = 'WF11XU'

Zu unserer Überraschung zeigt das Ergebnis ein unerwartetes Nachlaufen Leerzeichen:

"WF11XU "

Trotz des abschließenden Leerzeichens gibt SQL Server eine Übereinstimmung zurück, was uns verwirrt.

Dieses scheinbar kontraintuitive Verhalten lässt sich erklären, indem man sich mit den Standards befasst, die die Zeichenfolgenvergleiche von SQL Server leiten . Gemäß den ANSI/ISO SQL-92-Spezifikationen füllt SQL Server die in Vergleichen verwendeten Zeichenfolgen auf, um sicherzustellen, dass sie die gleiche Länge haben, bevor die Prüfung durchgeführt wird. Diese Regel erstreckt sich auf die meisten Vergleichsoperationen und macht Zeichenfolgen wie „abc“ und „abc“ für Zeichenfolgenvergleiche gleichwertig.

Die Ausnahme von dieser Regel ist jedoch das LIKE-Prädikat. Nur wenn der LIKE-Operator beteiligt ist, verzichtet SQL Server auf das Auffüllen. Diese Unterscheidung ergibt sich aus dem primären Zweck des LIKE-Prädikats, Muster zu vergleichen, und nicht aus direkten String-Gleichheitstests.

Da wir in unserem Fall den einfachen Gleichheitsoperator (=) verwenden, wird das nachgestellte Leerzeichen von SQL Server berücksichtigt , was zu einem erfolgreichen Spiel führte. Wenn unsere Absicht darin bestünde, nach genauen Übereinstimmungen zu suchen, könnten wir das LIKE-Prädikat verwenden, das das abschließende Leerzeichen ignorieren und ein genaueres Ergebnis liefern würde.

Das obige ist der detaillierte Inhalt vonWarum stimmt meine SQL-Abfrage trotz Verwendung des Gleichheitsoperators mit einem nachgestellten Leerzeichen überein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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