Ich bin heute auf ein interessantes Verhalten in SQL Server gestoßen (beobachtet in den Jahren 2005 und 2012), von dem ich gehofft hatte, dass es jemand erklären könnte.
Bei einer Abfrage, die einen Vergleich mit =
einem NVARCHAR-Feld durchführte, wurde das Leerzeichen in der Zeichenfolge ignoriert (oder der Wert vor dem Vergleich automatisch abgeschnitten), bei derselben Abfrage mit dem like
Operator wurde das Leerzeichen jedoch nicht ignoriert. Die verwendete Kollatierung ist Latin1_General_CI_AS im Jahr 2012.
Betrachten Sie diese SQL-Geige: http://sqlfiddle.com/#!6/72262/4
Beachten Sie, dass der like
Operator kein Ergebnis für die nachfolgende Leerzeichenfolge zurückgibt, der =
Operator jedoch. Warum ist das?
Bonuspunkte: Ich kann dies nicht auf ein VARCHAR-Feld replizieren. Ich hätte gedacht, dass ein Leerzeichen in beiden Datentypen auf die gleiche Weise behandelt wird. Stimmt das?
MyString+'x' = ltrim(rtrim(MyString))+'x'
wie in diesem Blog vorgeschlagen