我有这个SQL代码
declare @s varchar(8000) = 'manoeuvre'
select CHARINDEX(char(140), @s, 0)
char(140)=Œ,在字符串'机动'中不存在。 但是SQL Server返回以下内容
4(表示它已在该行上找到了char(140))
如果我用'*'替换'Œ',我得
似乎SQL已经用一个字符取代了'o'和'e',但为什么呢? 为什么用'Œ'代替'oe'?人* uvre
同样的效果可以看到字符串'mass'和'ß'(我认为是双s的德语)。替换此字符会返回刺痛'ma *'。
SQL是否试图在幕后做一些“聪明”的事情?
EDIT 额外信息:
SQL server 2008 R2。
数据库的整理是Latin1_General_CI_AS。
答案 0 :(得分:3)
如果您查找该符号(ASCII 140),则将其描述为
资本OE结扎
例如,请参阅www.table-ascii.com
试
select CHARINDEX(char(140), @s COLLATE Latin1_General_BIN, 0)
将进行二分查找。