5
Sql-Server 2008 R2
排序规则为。 当我使用两个字符串使用'='进行比较相等,但'失败'比较
select 1 where N'⑦' = N'7'
它输出1,但是当我改变运营商like
select 1 where N'⑦' like N'7'
它不会输出任何东西。
为什么like
运算符表现得很奇怪?我错过了什么?
Sql-Server 2008 R2
排序规则为。 当我使用两个字符串使用'='进行比较相等,但'失败'比较
select 1 where N'⑦' = N'7'
它输出1,但是当我改变运营商like
select 1 where N'⑦' like N'7'
它不会输出任何东西。
为什么like
运算符表现得很奇怪?我错过了什么?
这似乎是一个错误。 LIKE
针对没有通配符的模式应始终返回=
返回的相同内容。
其他可以通过运行下面的查询看到此行为:
SELECT
CASE WHEN N'⑦' COLLATE Chinese_Simplified_Pinyin_100_CI_AS = N'7' THEN 'Y' ELSE 'N' END,
CASE WHEN N'⑦' COLLATE Chinese_Simplified_Pinyin_100_CI_AS LIKE N'7' THEN 'Y' ELSE 'N' END
-- Y N
'N'⑦'与N'7%''和'N'7''N'ır%''都返回结果。在Connect上报告。对我来说,这似乎不像预期的行为。 – 2012-07-11 06:29:51
以下链接可能会对您有所帮助。看起来像一个已知的问题https://connect.microsoft.com/SQLServer/feedback/details/703959/search-with-like-not-working-as-expected-with-collation-slovenian-100-ci-as – PraveenVenu 2012-07-11 06:09:39
Don看不出连接问题是如何相关的(除了是LIKE的另一个问题) – 2012-07-11 06:16:19