gpt4 book ai didi

sql - 为什么 CHARINDEX 函数返回字符串 'Œ' 中 'manoeuvre' 的索引?

转载 作者:行者123 更新时间:2023-12-04 14:05:38 25 4
gpt4 key购买 nike

我有这个 SQL 代码

declare @s varchar(8000) = 'manoeuvre'
select CHARINDEX(char(140), @s, 0)

char(140) = Œ,它不存在于字符串 'manoeuvre' 中。
但 SQL 服务器返回以下内容

4 (indicating it had located the char(140) on this line)



如果我用 '*' 替换 'Œ' 我得到

man*uvre



似乎 SQL 已经用一个字符替换了 'o' 和 'e',但为什么呢?
为什么用“Œ”代替“oe”?

使用字符串 'mass' 和 'ß' 可以看到相同的效果(我认为这是德语中的双 s)。替换此字符返回刺痛 'ma*'。

SQL 是否试图在幕后做一些“聪明”的事情?

编辑
额外的信息:

SQL 服务器 2008 R2。

数据库的排序规则是 Latin1_General_CI_AS。

最佳答案

如果您查找该符号(ASCII 140),它被描述为

capital OE ligature



www.table-ascii.com例如

尝试
select  CHARINDEX(char(140), @s COLLATE Latin1_General_BIN, 0)

这将进行二分搜索。

关于sql - 为什么 CHARINDEX 函数返回字符串 'Œ' 中 'manoeuvre' 的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10915972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com