度量快速开发平台-专业、快速的软件定制快开平台

标题: Oracle支持正则表达式函数举例 [打印本页]

作者: 张兴康    时间: 2020-5-3 17:24
标题: Oracle支持正则表达式函数举例
Regexp_substr:用来提取一个字符串的一部分。
Regexp_substr('first filed, second filed, thirdfiled', ', [^,]*,')
Pattern为', [^,]*,'表示以,开始逗号,中间空一个格,连续0或多个非逗号字符,最后还是逗号,这样,返回则为', second filed,'。
-------------------------------------------------------------------------------

Regexp_instr:用来pattern的起始位置。
如有一组地址,返回邮编的位置
regexp_instr('Jone Smith,10045 Berry Lane,SanJoseph,CA91234-1234','[[:digit:]]{5}([-[[:digit:]]{4}])?$')
显然结果位置是91234-1234对应的起始位置。

-------------------------------------------------------------------------------

Regexp_replace:用来将pattern替换成需要替换的字符串,相比传统的replace函数,该函数相比较灵活。例如:
'Jone   smith'中有三个空格,而'Jone  smith'有2个空格,要将中间的空格改为一个空格,使用replace就要使用2次,而是用正则表达式,我们就就可以将pattern设计为
'( ){2,}'这样
regexp_replace(mc,'( ){2,}',' ')

-------------------------------------------------------------------------------

regexp_like是增强版的like,可以包含_和%通配符,使用在where条件中。
正则表达式特性---后向引用
通过将自表达式匹配的内容缓存到缓冲区中,从左相右进行编号,以/digit(digit为1-9)。而子表达式用圆括号表示。
1.在regexp_replace中应用:
将字符串'aa bb cc'反写成'cc bb aa'则可以设计如下:
regexp_replace('aa bbcc','(.*) (.*) (.*)','\3 \2 \1')
(.*)则表示任何一个字符串组合,三个这样的组合用空格隔开,与源字符串吻合,\1,\2,\3则分别存储了三个字表达式的值,这样我们就可以使用这个达到目的。

2.在regexp_substr中应用:
查找被空格隔开的重复字母数字值
regexp_substr('the finaltest is is the implention','([[:alnum:]]+)([[:space:]]+)\1')
返回结果为is is 。([[:alnum:]]+)([[:space:]]+)返回很多字符串,但是增加一个\1就表示连续返回两个同样字符串,这样就把重复的串给找出来。

作者: 张兴康    时间: 2020-5-3 17:25
沙发坐会再走
作者: 陈晓龙    时间: 2020-5-6 13:53
张兴康 发表于 2016-6-3 17:25
沙发坐会再走

自己坐自己的沙发。太任性了
作者: 张兴康    时间: 2020-5-6 17:56
陈晓龙 发表于 2016-6-6 13:53
自己坐自己的沙发。太任性了

朕的天下,由朕说了算
作者: 陈晓龙    时间: 2020-5-7 17:08
张兴康 发表于 2016-6-6 17:56
朕的天下,由朕说了算

好牛逼的说辞!




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2