来源:Oracle认证 发布时间:2012-11-12 Oracle认证视频 评论
Oracle使用正则表达式离不开这4个函数:
1。regexp_like
2。regexp_substr
3。regexp_instr
4。regexp_replace
看函数名称大概就能猜到有什么用了。
regexp_like 只能用于条件表达式,和 like 类似,但是使用的正则表达式进行匹配,语法很简单:
regexp_substr 函数,和 substr 类似,用于拾取合符正则表达式描述的字符子串,语法如下:
regexp_instr 函数,和 instr 类似,用于标定符合正则表达式的字符子串的开始位置,语法如下:
regexp_replace 函数,和 replace 类似,用于替换符合正则表达式的字符串,语法如下:
这里解析一下几个参数的含义:
1。source_char,输入的字符串,可以是列名或者字符串常量、变量。
2。pattern,正则表达式。
3。match_parameter,匹配选项。
取值范围: i:大小写不敏感; c:大小写敏感;n:点号 . 不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。
4。position,标识从第几个字符开始正则表达式匹配。
5。occurrence,标识第几个匹配组。
6。replace_string,替换的字符串。
说了一堆文绉绉的,现在开始实例演练了,在此之前先建好一个表。
01 create table tmp as
02 with data as (
03 select 'like' as id ,'a9999' as str from dual union all
04 select 'like' ,'a9c' from dual union all
05 select 'like' ,'A7007' from dual union all
06 select 'like' ,'123a34cc' from dual union all
07 select 'substr' ,'123,234,345' from dual union all
08 select 'substr' ,'12,34.56:78' from dual union all
09 select 'substr' ,'123456789' from dual union all
10 select 'instr' ,'192.168.0.1' from dual union all
11 select 'replace' ,'(020)12345678' from dual union all
12 select 'replace' ,'001517729C28' from dual
13 )
14 select * from data ;
15
16 select * from tmp ;
17 ID STR
18 ------- -------------
19 like a9999
20 like a9c
21 like A7007
22 like 123a34cc
23 substr 123,234,345
24 substr 12,34.56:78
25 substr 123456789
26 instr 192.168.0.1
27 replace (020)12345678
28 replace 001517729C28
regexp_like 例子:
01 select str from tmp where id='like' and regexp_like(str,'A/d+','i'); -- 'i' 忽略大小写
02 STR
03 -------------
04 a9999
05 a9c
06 A7007
07 123a34cc
08
09 select str from tmp where id='like' and regexp_like(str, 'a/d+');
10 STR
11 -------------
12 a9999
13 a9c
14 123a34cc
15
16 select str from tmp where id='like' and regexp_like(str,'^a/d+');
17 STR
18 -------------
19 a9999
20 a9c
21
22 select str from tmp where id='like' and regexp_like(str,'^a/d+$');
23 STR
24 -------------
25 a9999
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。