5

Sql-Server 2008 R2排序规则为​​。 当我使用两个字符串使用'='进行比较相等,但'失败'比较

select 1 where N'⑦' = N'7' 

它输出1,但是当我改变运营商like

select 1 where N'⑦' like N'7' 

它不会输出任何东西。

为什么like运算符表现得很奇怪?我错过了什么?

+0

'N'⑦'与N'7%''和'N'7''N'ır%''都返回结果。在Connect上报告。对我来说,这似乎不像预期的行为。 – 2012-07-11 06:29:51

+0

以下链接可能会对您有所帮助。看起来像一个已知的问题https://connect.microsoft.com/SQLServer/feedback/details/703959/search-with-like-not-working-as-expected-with-collat​​ion-slovenian-100-ci-as – PraveenVenu 2012-07-11 06:09:39

+0

Don看不出连接问题是如何相关的(除了是LIKE的另一个问题) – 2012-07-11 06:16:19

回答

1

这似乎是一个错误。 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 

我看到你reported it on Microsoft Connect