Oracle 身份证号正则,oracle正则表达式(详细)
搜索热词oracle正则表达式:入门容易,精通难。@H_403_3@一、ORACLE中的支持正则表达式的函数主要有四个:@H_403_3@ @H_403_3@ 1,REGEXP_LIKE :与LIKE的功能相似@H_403_3@ 2,REGEXP_INSTR :与INSTR的功能相似@H_403_3@ 3,REGEXP_SUBSTR :与SUBSTR的功能相似@H_403_3@ 4,REGEXP_
搜索热词
oracle正则表达式:入门容易,精通难。
@H_403_3@
一、ORACLE中的支持正则表达式的函数主要有四个:@H_403_3@ @H_403_3@ 1,REGEXP_LIKE :与LIKE的功能相似@H_403_3@ 2,REGEXP_INSTR :与INSTR的功能相似@H_403_3@ 3,REGEXP_SUBSTR :与SUBSTR的功能相似@H_403_3@ 4,REGEXP_REPLACE :与REPLACE的功能相似@H_403_3@
它们在用法上与Oracle sql 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,@H_403_3@ 但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。@H_403_3@
二、 POSIX 正则表达式由标准的元字符(Metacharacters)所构成:@H_403_3@ @H_403_3@ @H_403_3@ '^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。@H_403_3@ '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。@H_403_3@ '.' 匹配除换行符之外的任何单字符。@H_403_3@ '?' 匹配前面的子表达式零次或一次。@H_403_3@ '+' 匹配前面的子表达式一次或多次。@H_403_3@ '*' 匹配前面的子表达式零次或多次。@H_403_3@ '|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。@H_403_3@ '( )' 标记一个子表达式的开始和结束位置。@H_403_3@ '[]' 标记一个中括号表达式。@H_403_3@ @H_403_3@ @H_403_3@ '{m,n}' 一个精确地出现次数范围,m=
五、Oracle REGEXP_LIKE介绍和例子@H_403_3@ --创建表@H_403_3@ create table fzq (id varchar2(4),value varchar2(10));@H_403_3@ --数据插入@H_403_3@ insert into fzq values ('1','1234560');@H_403_3@ insert into fzq values ('2','1234560');@H_403_3@ insert into fzq values ('3','1b3b560');@H_403_3@ insert into fzq values ('4','abc');@H_403_3@ insert into fzq values ('5','abcde');@H_403_3@ insert into fzq values ('6','ADREasx');@H_403_3@ insert into fzq values ('7','123 45');@H_403_3@ insert into fzq values ('8','adc de');@H_403_3@ insert into fzq values ('9','adc,.de');@H_403_3@ insert into fzq values ('10','1B');@H_403_3@ insert into fzq values ('10','abcbvbnb');@H_403_3@ insert into fzq values ('11','11114560');@H_403_3@ insert into fzq values ('11','11124560');@H_403_3@ @H_403_3@ @H_403_3@ --regexp_like@H_403_3@ --查询value中以1开头60结束的记录并且长度是7位@H_403_3@ select * from fzq where value like '1____60';@H_403_3@ select * from fzq where regexp_like(value,'1....60');@H_403_3@ select * from a where regexp_like(name_a,'d$');@H_403_3@ @H_403_3@ @H_403_3@ --查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。@H_403_3@ --使用like就不是很好实现了。@H_403_3@ select * from fzq where regexp_like(value,'^1[0-9]{4}60$');@H_403_3@ @H_403_3@ @H_403_3@ -- 也可以这样实现,使用字符集。@H_403_3@ select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');@H_403_3@ @H_403_3@ @H_403_3@ -- 查询value中不是纯数字的记录@H_403_3@ select * from fzq where not regexp_like(value,'^[[:digit:]]+$');@H_403_3@ @H_403_3@ @H_403_3@ -- 查询value中不包含任何数字的记录。@H_403_3@ select * from fzq where regexp_like(value,'^[^[:digit:]]+$');@H_403_3@ @H_403_3@ @H_403_3@ --查询以12或者1b开头的记录.不区分大小写。@H_403_3@ select * from fzq where regexp_like(value,'^1[2b]','i');@H_403_3@ @H_403_3@ @H_403_3@ --查询以12或者1b开头的记录.区分大小写。@H_403_3@ select * from fzq where regexp_like(value,'^1[2B]');@H_403_3@ @H_403_3@ @H_403_3@ -- 查询数据中包含空白的记录。@H_403_3@ select * from fzq where regexp_like(value,'[[:space:]]');@H_403_3@ @H_403_3@ @H_403_3@ --查询所有包含小写字母或者数字的记录。@H_403_3@ select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');@H_403_3@ @H_403_3@ @H_403_3@ --查询任何包含标点符号的记录。@H_403_3@ select * from fzq where regexp_like(value,'[[:punct:]]');
@H_403_3@
六、REGEXP_REPLACE(字符串替换函数) REPLACE 函数是用另外一个值来替代串中的某个值。例如,可以用一个匹配数字来替代字母的每一次出现。REPLACE 的格式如下所示: 原型:regexp_replace(x,pattern[,replace_string[,start[,occurence[match_option]]]]) 每个参数的意思分别是: x 待匹配的函数 pattern 正则表达式元字符构成的匹配模式 replace_string 替换字符串 start 开始位置 occurence 匹配次数 match_option 匹配参数,这里的匹配参数和regexp_like是完全一样的,可参考前面的一篇文章。 举例来讲: sql> select regexp_replace('hello everybody,051courses will be over soon,thanks.','b[[:alpha:]]{3}','one') from dual; REGEXP_REPLACE('HELLOEVERYBODY,047COURSESWILLBEOVER --------------------------------------------------- hello everyone,thanks.
总结
以上是编程之家为你收集整理的oracle正则表达式(详细)全部内容,希望文章能够帮你解决oracle正则表达式(详细)所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)