带字母范围的 PATINDEX 不包括音调符号(重音字符)



我正在尝试弄清楚如何使用patindex来查找一系列字母字符,但不包括重音字符。 如果我进行直接搜索,使用默认排序规则(不敏感(就可以了。 但是,当我搜索一系列字母时,它将与重音字符匹配

SELECT
    IIF('Ú' = 'U' COLLATE Latin1_General_CI_AI, 'Match', 'No') AS MatchInsensitive,
    IIF('Ú' = 'U' COLLATE Latin1_General_CI_AS, 'Match', 'No') AS MatchSensitive,
    PATINDEX('%[A-Z]%', 'Ú' COLLATE Latin1_General_CI_AI)      AS PIInsensitive,
    PATINDEX('%[A-Z]%', 'Ú' COLLATE Latin1_General_CI_AS)      AS PISensitive

将给出以下结果:

MatchInsensitive MatchSensitive PIInsensitive PISensitive
---------------- -------------- ------------- -----------
Match            No             1             1

我真正想做的是识别字符串中重音字符的字符位置,所以我真的在寻找PATINDEX('%[^A-Z0-9 ]%')

如果我有以下查询,我希望结果为 2 SELECT PATINDEX('%[^A-Z0-9 ]%', 'médico'),但我得到 0。

您可以使用二进制排序规则,例如 Latin1_General_100_BIN2 .

select patindex('%[^a-zA-Z0-9 ]%', 'médico' collate Latin1_General_100_BIN2)

Rextester:http://rextester.com/ZICLN98474

返回2

相关内容

  • 没有找到相关文章

最新更新