Oracle中的支持正则表达式的函数主要有以下五个:
1、REGEXP_LIKE :与LIKE的功能相似,可以支持按正则表达式与文本进行匹配
2、REGEXP_INSTR :返回指定字符串中与正则表达式匹配部分第一次出现的位置
3、REGEXP_COUNT :返回指定字符串中与正则表达式匹配部分出现的次数
4、REGEXP_SUBSTR :截取指定字符串中与正则表达式匹配的部分
5、REGEXP_REPLACE :替换指定字符串中与正则表达式匹配的部分
一、REGEXP_LIKE()
REGEXP_LIKE(STRING, REGEX, MODIFIER)
STRING:需要进行正则处理的字符串
REGEX:进行匹配的正则表达式
MODIFIER:模式(‘i’不区分大小写进行检索;‘c’区分大小写进行检索。默认为’c’)
示例:
SELECT ENAME, JOB FROM EMP WHERE REGEXP_LIKE(JOB, '(clerk|analyst)', 'i');
结果:
ENAME | JOB |
---|---|
SMITH | CLERK |
JAMES | CLERK |
FORD | ANALYST |
SCOTT | ANALYST |
二、REGEXP_INSTR()
REGEXP_INSTR(STRING, REGEX[, START_POSITION[, OCCURRENCE[, RETURN_OPTION[, MODIFIER]]]])
STRING:需要进行正则处理的字符串
REGEX:进行匹配的正则表达式
START_POSITION:起始位置,从字符串的第几个字符开始正则表达式匹配(默认从第一个字符开始,值为1)
OCCURRENCE:获取分割出来的第几组子串(分割后最初的字符串会按分割的顺序排列成数组)
RETURN_OPTION:指定返回值的类型。为0,则返回匹配值第一次出现的第一个字符的角标,非0,则返回匹配值第一次出现的最后一个字符的角标+1
MODIFIER:模式
‘c’ 区分大小写进行检索。默认为‘c’
‘i’ 不区分大小写进行检索
‘n’ 允许句点(.)作为通配符去匹配换行符。如果省略该参数,句点将不匹配换行符
‘m’ 将源串视为多行。即 Oracle 中将^和$分别看作源串中任意位置任何行的开始和结束,而不是仅仅看作整个源串的开始或结束。如果省略该参数,则Oracle将源串看作一行。
‘x’ 忽略源串中的空格字符。默认情况下,空格字符与自身相匹配。
返回值:返回满足正则表达式的字符或字符串第一次出现的角标,如果没有找到结果,则返回0。
示例:
SELECT REGEXP_INSTR('11a22A33a', 'a') AS STR FROM DUAL;
结果:3
SELECT REGEXP_INSTR('11a22A33a11a22A33a', '2A',