J'ai rencontré un comportement intéressant sur SQL Server (observé en 2005 et 2012) aujourd'hui que j'espérais que quelqu'un pourrait expliquer.
Une requête effectuant une comparaison à l'aide =
d'un champ NVARCHAR a ignoré l'espace de fin dans la chaîne (ou a coupé automatiquement la valeur avant la comparaison), mais la même requête utilisant l' like
opérateur n'a pas ignoré l'espace. Le classement utilisé est Latin1_General_CI_AS en 2012.
Considérez ce SQL Fiddle: http://sqlfiddle.com/#!6/72262/4
Notez que l' like
opérateur ne renvoie pas de résultat pour la chaîne d'espace de fin, mais l' =
opérateur le fait. Pourquoi est-ce?
Points bonus: je ne peux pas reproduire ceci sur un champ VARCHAR, j'aurais pensé qu'un espace serait géré de la même manière dans les deux types de données - est-ce vrai?
MyString+'x' = ltrim(rtrim(MyString))+'x'
comme suggéré sur ce blog