① 正则替换 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;
例子 切分之后分行显示
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;
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')
2
“1”为开始位置 "i"是不区分大小写