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中的正则表达式