Oracle sql中的正则表达式

ORACLE 正则表达式的使用:

REGEXP_LIKE

REGEXP_INSTR

REGEXP_SUBSTR

REGEXP_REPLACE

1.利用正则表达式获取某字符串中的所有数字。

regexp_replace(1,2,3,4,5,6)

语法说明:1:字段   2:替换的字段  3:替换成什么  4:起始位置(默认从1开始)  5:替换的次数(0是无限次)  6:不区分大小写

select regexp_replace(city,'java','test',1,0,'i') from  table

select REGEXP_REPLACE(‘mak是123号234’,’[^0-9]’,’’) from dual;

2.REGEXP_LIKE的用法

--查询value中以1开头60结束的记录并且长度是7位

select * from fzq where value like '1____60';

select * from fzq where regexp_like(value,'1....60');

--查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。 --使用like就不是很好实现了。

select * from fzq where regexp_like(value,'1[0-9]{4}60');

-- 也可以这样实现,使用字符集。

select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');

-- 查询value中不是纯数字的记录

select * from fzq where not regexp_like(value,'^[[:digit:]]+$');

-- 查询value中不包含任何数字的记录。

select * from fzq where regexp_like(value,'^[^[:digit:]]+$');

--查询以12或者1b开头的记录.不区分大小写。

select * from fzq where regexp_like(value,'^1[2b]','i');

--查询以12或者1b开头的记录.区分大小写。

select * from fzq where regexp_like(value,'^1[2B]');

-- 查询数据中包含空白的记录。

select * from fzq where regexp_like(value,'[[:space:]]');

--查询所有包含小写字母或者数字的记录。

select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$'); -

-查询任何包含标点符号的记录。

select * from fzq where regexp_like(value,'[[:punct:]]');

3.REGEXP_INSTR的用法

找数字(从第一个字母开始匹配,找第2个匹配项目的最后一个字符的位置)

select REGEXP_INSTR (a,'[0-9]+', 1,2, 1)  from dual;

6个参数说明

第一个是输入的字符串

第二个是正则表达式

第三个是标识从第几个字符开始正则表达式匹配。(默认为1)

第四个是标识第几个匹配组。(默认为1)

第五个是指定返回值的类型,如果该参数为0,则返回值为匹配位置的第一个字符,如果该值为非0则返回匹配值的最后一个位置。

第六个是是取值范围:

i:大小写不敏感;

c:大小写敏感;

n:点号 . 不匹配换行符号;

m:多行模式;

x:扩展模式,忽略正则表达式中的空白字符。

4.REGEXP_SUBSTR的用法

select REGEXP_SUBSTR(‘11a22A33a’,’[^A]+’,1,1,‘i’)  from dual
结果:11
分析:正则表达式是以A为标识进行分割,而’i’标识不区分大小写,所以结果是11,而不是11a22

select REGEXP_SUBSTR(‘11a22A33a’,’[^A]+’,1,1,‘c’) from dual;
结果:11a22
 

参数说明:

function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
string:需要进行正则处理的字符串
pattern:进行匹配的正则表达式
position:起始位置,从字符串的第几个字符开始正则表达式匹配(默认为1) 注意:字符串最初的位置是1而不是0
occurrence:获取第几个分割出来的组(分割后最初的字符串会按分割的顺序排列成组)
modifier:模式(‘i’不区分大小写进行检索;‘c’区分大小写进行检索。默认为’c’)针对的是正则表达式里字符大小写的匹配
 

你可能感兴趣的:(oracle数据库,正则表达式)