我今天在 SQL Server 上遇到了一些有趣的行为(在 2005 年和 2012 年观察到),我希望有人能解释一下。
使用=
NVARCHAR 字段进行比较的查询会忽略字符串中的尾随空格(或在比较之前自动修剪值),但使用like
运算符的同一查询不会忽略该空格。2012 年使用的排序规则是 Latin1_General_CI_AS。
考虑这个 SQL 小提琴:http ://sqlfiddle.com/#! 6/72262/4
请注意,like
运算符不会返回尾随空格字符串的结果,但=
运算符会返回。为什么是这样?
加分项:我无法在 VARCHAR 字段上复制它,我原以为在两种数据类型中都会以相同的方式处理空间 - 这是真的吗?