我试图弄清楚如何使用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。
发布于 2017-03-30 20:54:48
您可以使用二进制排序规则,例如Latin1_General_100_BIN2。
select patindex('%[^a-zA-Z0-9 ]%', 'médico' collate Latin1_General_100_BIN2)rextester:http://rextester.com/ZICLN98474
返回2
https://stackoverflow.com/questions/43128049
复制相似问题