Teradata SQL中用REGEXP_SUBSTR匹配非末尾首个数字串的正则问题
问题解答
错误原因
- 正则末尾多余的斜杠属于无效字符,Teradata 的 REGEXP_SUBSTR 函数不需要为正则参数添加首尾定界符,额外的
/会导致规则完全匹配不到任何内容 - 原规则
[0-9]+(?!$)逻辑本身没有大问题,但存在极端边界场景的匹配误差,改为正向预查兼容性更好
正确正则写法
使用如下函数调用即可满足需求:REGEXP_SUBSTR(column, '[0-9]+(?=.)')
其中(?=.)是正向零宽预查,要求匹配到的连续数字后面必须存在至少1个任意字符,也就是确保数字串不会出现在字符串最末尾。
效果验证
- 输入
YEL2X30,返回值为2 - 输入
YEL19XYZ05,返回值为19 - 输入
YELLOW05,无匹配结果返回空值
内容的提问来源于stack exchange,提问作者Goliath
相关产品推荐
相关产品推荐

