首页 > 数据库 > mysql教程 > Oracle 11g中regexp_count函数

Oracle 11g中regexp_count函数

WBOY
发布: 2016-06-07 17:36:21
原创
2759 人浏览过

在Oracle 11g 中,可以使用REGEXP_COUNT 函数。REGEXP_COUNT 返回在源串中出现的模式的次数,作为对REGEXP_INSTR 函数的补充。需

在Oracle 11g 中,可以使用REGEXP_COUNT 函数。REGEXP_COUNT 返回在源串中出现的模式的次数,作为对REGEXP_INSTR 函数的补充。需要注意的是,尽管COUNT 是一个集合函数,它操作的是行组,但REGEXP_COUNT 是一个单行函数,它分别计算每一行。
REGEXP_COUNT 的语法如下所示:
   REGEXP_COUNT ( source_char, pattern [, position [, match_param]])

REGEXP_COUNT 返回pattern 在source_char 串中出现的次数。如果未找到匹配,,则函数返回0。position 变量告诉Oracle 在源串的什么位置开始搜索。在开始位置之后每出现一次模式,都会使计数结果增加1。

match_param 变量支持下面几个值:

‘i’ 用于不区分大小写的匹配
‘c’ 用于区分大小写的匹配
‘n’ 允许句点(.)作为通配符去匹配换行符。如果省略该参数,则句点将不匹配换行符
‘m’ 将源串视为多行。即Oracle 将^和$分别看作源串中任意位置任何行的开始和结束,而不是仅仅看作整个源串的开始或结束。如果省略该参数,则Oracle将源串看作一行。
‘x’ 忽略空格字符。默认情况下,空格字符与自身相匹配。

如果为match_param 指定了多个相互矛盾的值,那么Oracle 使用最后一个值。
可以用REGEXP_COUNT 来修改本章前面的LENGTH 示例。可以将下面的语法

   select (LENGTH('GEORGE') - LENGTH(REPLACE('GEORGE', 'GE', NULL)) ) / LENGTH('GE') AS Counter 
   from DUAL; 
   COUNTER 
   ------- 
   2

用如下语法来代替,得到的结果是相同的:
   select REGEXP_COUNT('GEORGE','GE',1,'i') 
   from DUAL;

用REGEXP_COUNT 取代LENGTH 还有一个好处,即可以进行不区分大小写的搜索,因此,前面的查询也可以写成下面这样:
   select REGEXP_COUNT('GEORGE','ge',1,'i') 
   from DUAL;

REGEXP_SUBSTR 、REGEXP_INSTR 、REGEXP_LIKE 、REGEXP_REPLACE 和REGEXP_COUNT 函数的使用只受限于您开发正则表达式的能力,而正则表达式反映了您的需要。正如本章中的示例所示,

可以使用这些函数来修改已有数据的显示、查找复杂的模式以及在模式中返回串。

linux

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板