两个字符串使用' ='但是没有像''那样相比

时间:2012-07-11 03:58:25

标签: sql-server-2008 tsql sql-server-2008-r2 string-comparison

Sql-Server 2008 R2整理是Chinese_Simplified_Pinyin_100_CI_AS。 当我使用

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

输出1,但是当我将操作符更改为like

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

它不输出任何东西。

为什么like操作符行为如此奇怪?我错过了什么吗?

1 个答案:

答案 0 :(得分: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