Oracle 正则表达式函数 REGEXP

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', 
  • 8
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值