基于指定字符串定位字段并提取子串:如何用REGEXP_SUBSTR获取Serial No值
结论
- 不需要嵌套REGEXP实现,直接利用
REGEXP_SUBSTR的捕获组功能即可满足需求 - 对应正则表达式为:
'Serial No: *([^,]+)'
完整可运行SQL
SELECT REGEXP_SUBSTR('Entry: Make: 1, Model: 6, Year: 7, Serial No: 1G20441XC454, Point of Origin: ', 'Serial No: *([^,]+)', 1, 1, NULL, 1) "REGEXPR_SUBSTR" FROM DUAL
运行结果即为所需的1G20441XC454。
实现说明
- 正则规则拆解:
- 先匹配固定前缀
Serial No:,不受其他字段的存在性、排序规则影响 - 前缀后的
*匹配任意数量的前置空格,自动完成开头空格的去除需求 - 捕获组
([^,]+)匹配所有非逗号的连续字符,精准截取到下一个逗号之前的全部内容,若该字段为最后一个字段没有后续逗号,也会自动匹配到字符串末尾
- 先匹配固定前缀
REGEXP_SUBSTR最后一个参数设置为1,直接返回第一个捕获组的内容,无需额外嵌套函数做二次处理。
内容的提问来源于stack exchange,提问作者Stephen
相关产品推荐
相关产品推荐

