两个字符串使用'='比较相等,但在'like'compare中失败

Kev*_*ang 5 t-sql string-comparison sql-server-2008 sql-server-2008-r2

Sql-Server 2008 R2整理是Chinese_Simplified_Pinyin_100_CI_AS.我用的时候

select 1 where N'?' = N'7'
Run Code Online (Sandbox Code Playgroud)

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

select 1 where N'?' like N'7'
Run Code Online (Sandbox Code Playgroud)

它不会输出任何东西.

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

Eri*_*ikE 1

这似乎是一个错误。LIKE针对没有通配符的模式应该始终返回与=返回的内容相同的内容。

\n\n

其他人可以通过运行以下查询来查看此行为:

\n\n
SELECT\n   CASE WHEN N\'\xe2\x91\xa6\' COLLATE Chinese_Simplified_Pinyin_100_CI_AS = N\'7\' THEN \'Y\' ELSE \'N\' END,\n   CASE WHEN N\'\xe2\x91\xa6\' COLLATE Chinese_Simplified_Pinyin_100_CI_AS LIKE N\'7\' THEN \'Y\' ELSE \'N\' END\n-- Y N\n
Run Code Online (Sandbox Code Playgroud)\n\n

我看到您在 Microsoft Connect 上报告了该问题

\n