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 ein Auffüllen der 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 äquivalent.
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 vor dem Vergleich nicht auf dieselbe Länge auf. Da der Zweck des LIKE-Prädikats per Definition darin besteht, die Mustersuche zu vereinfachen, anstatt einfache Zeichenfolgengleichheitstests durchzuführen, verstößt dies nicht gegen den zuvor erwähnten Abschnitt der ANSI SQL-92-Spezifikation.
Hier ist ein bekanntes Beispiel für alle oben genannten Fälle:
\nhat in SQL Server keine Bedeutung. Es wird nicht als neue Zeile interpretiert. Dies ist ohnehin keine Antwort auf die gestellte Frage.
Martin Smith
@MartinSmith, aber es ist in MSDN geschrieben. "Wenn Ihre Zeichenfolge nachgestellte Leerzeichen enthalten muss, sollten Sie am Ende ein Leerzeichen anhängen, damit SQL Server die Zeichenfolge nicht schneidet."
Sie können Ihrer Bedingung einfach einen Leerraum hinzufügen.
Nachgestellte Leerzeichen in Zeichenfolgenfunktionen
quelle
\n
hat in SQL Server keine Bedeutung. Es wird nicht als neue Zeile interpretiert. Dies ist ohnehin keine Antwort auf die gestellte Frage.