正则表达式四

----===============Oracle正则表达式(regularexpression)=================
/*
在oracle里正则表达式有四个函数可用,分别是regexp_like、regexp_substr、regexp_instr 和regexp_replace。
这里在我们oracle 10g里灵活应用。
先来简单介绍一下正则表达式的内容,正则表达式是做为快速查询的文本内容的,在linux应用比较多,
首先,行的起始与结束 “^”这个字符是表示只查找行首的内容。“$”这个字符只查找行末的内容。
接下来是“^”还可以做为一个排除字符来使用。还是使用例子来做一个演示比较明了一下。
*/

来介绍一个regexp_instr函数
REGEXP_INSTR 函数使用正则表达式返回搜索模式的起点和终点。REGEXP_INSTR 的语法如下所示。REGEXP_INSTR 返回一个整数,
指出搜索模式的开始或结束的位置,如果没有发现匹配的值,则返回0。
语法:
REGEXP_INSTR与INSTR函数相同,返回字符串位置
REGEXP_INSTR(srcstr, pattern [, position [, occurrence [, return_option [,match_option]]]])
与REGEXP_SUBSTR一样,它也有变量pattern、position(开始位置)、occurrence 和match_parameter;
这里主要介绍一下新参数return_option 的作用,它允许用户告诉Oracle,模式出现的时候,要返回什么内容。
Select regexp_instr('asdfafd<main>da>fda','sd') from dual
Output:2
这里去查询sd的位置,这个和instr是在相同的

Select regexp_instr('asdfafd<main>da>fda','da',1,2) from dual
这里是查询da第二出现的位置
还有我们经常会遇到一种情况是,查询某个字段,如果是等于“上海”或“北京”或者我们温州就写成大城市,
其它的写成小城市,我们一般会考虑使用decode这种方式

Select decode('上海','上海','大城市','北京' ,'大城市' ,'温州' ,'大城市','小城市') from dual
只有两个我们可能觉的sql也不是很冗长,如果有四五个的话,就有点长了,这里使用regexp_instr就可以很多的去操作

Select decode (regexp_instr('北京','^(上海|北京|温州)'),0,'小城市', '大城市') from dual
通过regexp_instr不匹配时为0的条件,这样就可以完成了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值