irpas技术客

Oracle sql中的正则表达式_oracle sql 正则表达式_zzr_181103_ly

大大的周 845

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’)针对的是正则表达式里字符大小写的匹配 ?


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #oracle #SQL #正则表达式 #sql中的正则表达式