regexp_instr
REGEXP_INSTR该函数返回模式的起始位置,因此其工作方式与熟悉的INSTR函数非常相似
句法:
REGEXP_INSTR(源字符串,模式[,开始位置[,出现[,返回选项[,匹配参数]]]]))
source_string-可以是CHAR,VARCHAR2,CLOB,NCHAR,NVARCHAR2和NCLOB的列,但不能是LONG数据类型
start_position-(可选)指示您要开始搜索的start_position
事件-除非您指示您正在寻找后续事件,否则出现参数默认为1
return_option-return_option的默认值为0,返回模式的起始位置。值为1则返回匹配后下一个字符的起始位置
例:
以下SQL查询返回字符串Joe Joe Smith(加利福尼亚州约瑟夫市圣约瑟夫市10045 Berry Lane 10045)中五位邮政编码模式的起始位置。
SELECT REGEXP_INSTR('Joe Smith, 10045 Berry Lane, San Joseph, CA 91234',
'[[:digit:]]{5}$')
AS rx_instr
FROM dual
RX_INSTR
----------
45
如果将正则表达式写为[[:digit:]] {5},则将获得门牌号码的起始位置,而不是邮政编码的起始位置,因为10045是五个连续数字的第一个出现。
因此,必须将表达式锚定到该行的末尾(如$元字符所示),并且该函数将显示邮政编码的起始位置,而与门牌号的位数无关。
翻译自: https://bytes.com/topic/oracle/insights/738918-10g-regular-expressions-regexp_instr
regexp_instr