小编RPh*_*der的帖子

带有字母范围的 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
Run Code Online (Sandbox Code Playgroud)

将给出以下结果:

MatchInsensitive MatchSensitive PIInsensitive PISensitive
---------------- -------------- ------------- -----------
Match            No             1             1
Run Code Online (Sandbox Code Playgroud)

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

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

sql sql-server diacritics patindex

5
推荐指数
1
解决办法
1372
查看次数

标签 统计

diacritics ×1

patindex ×1

sql ×1

sql-server ×1