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
Freigeben: 2025-01-04 14:14:38
Original
131 Leute haben es durchsucht

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'
Nach dem Login kopieren

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

"WF11XU "
Nach dem Login kopieren

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!

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