You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL的PATINDEX中匹配排除U的字母正则表达式

PATINDEX正则匹配003开头且第四位非U/u的字符串

要实现匹配前3位为003、第4位为除U/u外任意字母的需求,你需要调整字符范围的写法——SQL的PATINDEX模式匹配中,字符集内的排除逻辑不能直接将^Uu混入字母范围,而是要拆分字母区间来避开U和u:

正确的表达式写法

SELECT PATINDEX('%003[A-TV-Za-tv-z]%', '目标字符串')

为什么之前的写法无效

  • 第一种写法%[0][0][3][A-Za-z^Uu]%:字符集内的^只有放在开头时才表示排除,放在中间只是普通字符,所以无法排除U/u。
  • 第二种写法%[0][0][3][A-Za-z][^Uu]%:这是匹配003+任意字母+非U/u字符,相当于要求第5位不是U/u,完全不符合你对第4位的限制需求。

测试验证

匹配符合条件的字符串:

SELECT PATINDEX('%003[A-TV-Za-tv-z]%', '003A654') -- 返回1,匹配成功
SELECT PATINDEX('%003[A-TV-Za-tv-z]%', '003v123') -- 返回1,匹配成功

匹配不符合条件的字符串:

SELECT PATINDEX('%003[A-TV-Za-tv-z]%', '003U654') -- 返回0,不匹配
SELECT PATINDEX('%003[A-TV-Za-tv-z]%', '003u456') -- 返回0,不匹配

内容的提问来源于stack exchange,提问作者Dizzy49

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 05:18:15