如何在T-SQL中移除字符串内的组合重音符号?
实现方案
方法1:调整REPLACE的排序规则(适配你原本的实现思路)
你最初的REPLACE写法不生效,是因为默认排序规则会把带组合重音的о识别为单个字符,不会拆分出单独的重音符号做匹配。指定二进制排序规则强制按字符编码逐位匹配即可:
SELECT REPLACE(N'ко́шка' COLLATE Cyrillic_General_BIN, NCHAR(0x0301), N'')
执行后会直接返回你需要的кошка结果。
方法2:重音不敏感排序规则转换(通用移除所有重音场景)
如果需要一次性移除字符串内所有类型的西里尔字符重音,不需要逐个枚举重音符号,可以用排序规则转换的方式实现:
SELECT CAST(CAST(N'ко́шка' AS VARCHAR(100)) COLLATE Cyrillic_General_CI_AI AS NVARCHAR(100))
其中CI_AI后缀的排序规则代表大小写不敏感、重音不敏感,转换时会自动把所有带重音的字符替换为无重音的基础字符。
内容的提问来源于stack exchange,提问作者Sergey Slepov
相关产品推荐
相关产品推荐

