我有这个 SQL 代码
declare @s varchar(8000) = 'manoeuvre'
select CHARINDEX(char(140), @s, 0)
char(140) = Œ,在字符串“manoeuvre”中不存在。然而 SQL 服务器返回以下
4(表示它已经在这条线上找到了 char(140))
如果我用 '*' 替换 'Œ' 我得到
人* uvre
似乎 SQL 已经用一个字符替换了“o”和“e”,但为什么呢?为什么要用“Œ”替换“oe”?
使用字符串 'mass' 和 'ß' 可以看到相同的效果(我相信这是双 s 的德语)。替换此字符会返回字符串“ma*”。
SQL 是否试图在幕后做一些“聪明”的事情?
编辑额外信息:
SQL 服务器 2008 R2。
数据库的排序规则是 Latin1_General_CI_AS。