Dzisiaj spotkałem ciekawe zachowanie SQL Server (zaobserwowane w 2005 i 2012 roku), które miałem nadzieję, że ktoś może to wyjaśnić.
Zapytanie dokonujące porównania za =
pomocą pola NVARCHAR zignorowało końcowe miejsce w ciągu (lub automatycznie przycięło wartość przed porównaniem), ale to samo zapytanie z like
operatorem nie zignorowało tego miejsca. Stosowane zestawienie to Latin1_General_CI_AS w 2012 r.
Rozważ to SQL Fiddle: http://sqlfiddle.com/#!6/72262/4
Zauważ, że like
operator nie zwraca wyniku dla ciągu końcowego spacji, ale =
robi to. Dlaczego to?
Punkty bonusowe: Nie jestem w stanie powielić tego na polu VARCHAR, pomyślałbym, że w obu typach danych miejsce będzie obsługiwane w ten sam sposób - czy to prawda?
MyString+'x' = ltrim(rtrim(MyString))+'x'
jak sugerowano na tym blogu