regexp_like()
regexp_like(search_string, pattem[, match_option]);
主要参数:
search_string 是搜索值。
pattem 是使用的正则表达式且长度限制在512字节内。
match_option 是一个文本串,允许用户设置该函数的匹配行为。可以使用的选项如表,
值 描述
C 匹配时,大小写敏感,默认值。
I 匹配时,大小写不敏感。
N 允许使用原点(.)匹配任何新增字符。
M 允许将源字符作为多个字符串对待。
regexp_like(last_name, 'e$')函数检索last_name 末尾是e的数据。
以下是两个关于regexp_like的例子:
这个例子是寻找员工中的80后的员工。
select * from emp where regexp_like(to_char(birthdate,'yyyy'),'^198[0-9]$');
这个例子是寻找名字是以'M'或者'm'打头的那些员工的名字
select * from emp where regexp_like(ename,'^j','i')
regexp_instr的原型如下:
regexp_instr(x,pattern[,start[,occurrence[,return_option[,match_option]]]])
这里每个参数分别含义如下:
x 待匹配的字符串
pattern 待匹配的模式
start 开始匹配的位置,如果不指定默认为1
occurrence 匹配的次数,如果不指定,默认为1
return_option 指定返回值的类型,如果该参数为0,则返回值为匹配位置的第一个字符,如果该值为非0则返回匹配值的最后一个位置。
match_option 可以用这个参数来修改一些默认的配置设置。这个值与前面所说的regexp_like函数中的match_option参数的意义是一样的。
下面来举几个有关regexp_instr函数的例子:
select (’i love http://www.52oracle.com','o[[:alpha:]]{4}e$',1,1/) as r from dual
这个例子从’i love http://www.52oracle.com’/这个字符串中匹配一个模式,这个模式是以o开头,以e结尾,在o和e之间有4个字符的字符串。这样自然而然就返回oracle的起始位置14
另一个例子是:
select (’i love http://www.52oracle.com','o[[:alpha:]]{2}',1,2,1/) as r from dual
这个例子的含义是在'i love http://www.52oracle.com'/这个字符串中匹配另一个模式,这个模式是以o开始,再包含两个字符的一个模式,因此这个模式可以是ove,也可是 ora但是我们要求它匹配两次,因此这个SQL语句的结果是ora所在的位置,所在的什么位置呢?因为我们的return_option参数的值是1,即大于0,所以这的结果是16,也就单词oracle中a所在的位置。
regexp_replace函数和regexp_substr函数的功能类似与字符函数replace和substr,只是这里的应用更加灵活,可以一下子匹配一系列的结果,而原来的函数只能一下子匹配一个固定的字符换。
具体来讲:
regexp_replace的意义是找到于给定模式匹配的字符串并用其他的字符串来替代。
其原型是:regexp_replace(x,pattern[,replace_string[,start[,occurence[match_option]]]])
每个参数的意思分别是:
x 待匹配的函数
pattern 正则表达式元字符构成的匹配模式
replace_string 替换字符串
start 开始位置
occurence 匹配次数
match_option 匹配参数,这里的匹配参数和regexp_like是完全一样的,可参考前面的一篇文章。
举例来讲:
select regexp_replace('hello everybody,may I have your attention please?','b[[:alpha:]]${3}’,'one’) from dual将会返回结果:
hello everyone,may I have your attention please?
而regexp_substr函数的意义找出与给定模式匹配的字符串并返回,
其原型是:regexp_substr(x,pattern[,start[,occurence[match_option]]])
这里各参数的意义与前面的函数regexp_replace的含义是一样做的。
regexp_substr的例子如下:
select regexp_substr(’I love oracle very much’,'o[[:alpha:]]${4}’) from dual;
这里将会匹配出结果:
oracle来。这也是这个函数的返回结果。