Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-WHERE-Klausel, die Werte mit nachgestellten Leerzeichen abgleicht

Das ist das erwartete Ergebnis:in SQL Server der = Der Operator ignoriert nachgestellte Leerzeichen beim Vergleich.

SQL Server folgt der ANSI/ISO SQL-92-Spezifikation (Abschnitt 8.2, , Allgemeine Regeln Nr. 3) zum Vergleichen von Zeichenfolgen mit Leerzeichen. Der ANSI-Standard erfordert Auffüllen für die in Vergleichen verwendeten Zeichenfolgen, damit ihre Längen übereinstimmen, bevor sie verglichen werden. Das Auffüllen wirkt sich direkt auf die Semantik von WHERE- und HAVING-Klauselprädikaten und anderen Transact-SQL-Zeichenfolgenvergleichen aus. Beispielsweise betrachtet Transact-SQL die Zeichenfolgen 'abc' und 'abc ' für die meisten Vergleichsoperationen als gleichwertig.

Die einzige Ausnahme von dieser Regel ist das LIKE-Prädikat. Wenn die rechte Seite eines LIKE-Prädikatausdrucks einen Wert mit einem nachgestellten Leerzeichen enthält, füllt SQL Server die beiden Werte nicht auf die gleiche Länge auf, bevor der Vergleich erfolgt. Da der Zweck des LIKE-Prädikats per Definition eher darin besteht, Mustersuchen zu erleichtern als einfache String-Gleichheitstests, verstößt dies nicht gegen den zuvor erwähnten Abschnitt der ANSI SQL-92-Spezifikation.

Quelle