oracle常用正则函数

① 正则替换 regexp_replace

select regexp_replace('我爱money,因为money能让我生活的更好','money','oracle',1,0,'i') from dual;  
regexp_replace(1,2,3,4,5,6)
语法说明:1:字段   2:替换的字段  3:替换成什么  4:起始位置(默认从1开始)  5:替换的次数(0是无限次)  6:不区分大小写(i),区分大小写(c)

SELECT(REGEXP_REPLACE('LSS12345', '[^0-9]')) FROM DUAL;
---取出值里面的全部数字

SELECT LENGTH('LSS12345'),LENGTH(REGEXP_REPLACE('LSS12345', '[^0-9]')) FROM DUAL; 
---查询出字段的长度和字段内数字的长度

SELECT* FROM DUAL  WHERE LENGTH('LSS12345') = LENGTH(REGEXP_REPLACE('LSS12345', '[^0-9]')) ;  
----查询这个字段所有的纯数字列

②正则 regexp_like

regexp_like(1,2,3)
语法说明:1:字段  2:查询的关键字  3:不区分大小写(哈哈,以后就可以不用 (upper()))

select * from table where regexp_like(column1,'oracle','i')      
- ---查询表 table 的column1 列   包含 字符串  oracle 的 所有行数据,  i  不区分大小写

③正则分割 REGEXP_SUBSTR

REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr     :需要进行正则处理的字符串
__pattern    :进行匹配的正则表达式
__position   :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier   :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)


SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,1,'i') AS STR FROM DUAL;       -----返回结果是 17     ----以 逗号',' 进行分割,起始位置是1,取第一个截取字符串,不区分大小写  i 


例子 切分之后分行显示
SELECT REGEXP_SUBSTR('17,20,23',
                     '[^,]+',
                     1,
                     rownum)
  FROM DUAL
CONNECT BY ROWNUM <= LENGTH('17,20,23') -
           LENGTH(REPLACE('17,20,23',
                                    ',',
                                    '')) + 1;
REGEXP_SUBSTR('17,20,23','[^,]+',1,ROWNUM)
--------------------------------------------------------------------------------------------------------------------------------
17
20
23

④正则 regexp_instr

SYS@  >select regexp_instr('OCI, OCCI, JDBC, ODBC and ProC','OC',1,2,0,'c')  from dual;

REGEXP_INSTR('OCI,OCCI,JDBC,ODBCANDPROC','OC',1,2,0,'C')
--------------------------------------------------------
                                                       6

“1”为开始位置 “2”是搜索第二个匹配的,”0”是return_option 返回出现的第一个字符位置
“c”是区分大小写 

⑤正则统计 regexp_count

SYS@ WebDB >select regexp_count('OCI, OCCI, JDBC, ODBC and Pro*C','oc',1,'i')  from dual;

REGEXP_COUNT('OCI,OCCI,JDBC,ODBCANDPRO*C','OC',1,'I')
-----------------------------------------------------
                                                    21”为开始位置 "i"是不区分大小写
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值