ITPUB论坛-中国最专业的IT技术社区

 
 注册
热搜:
查看: 977|回复: 5

[SQL] 如何使用正则表达式函数RegExp_Count?

[复制链接]
论坛徽章:
0
跳转到指定楼层
1#
发表于 2017-11-15 20:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大神,小弟正在学习Oracle的正则表达式函数RegExp_Count,对这一函数及其各参数的作用已大体了解,唯一不解的是match_pa这一参数如何用,甚是不解


RegExp_Count(str,patt[,pos[,match_pa]])

可统计字符串出现的次数。其中,
str:源字符串;
patt:可匹配的正则表达式;
pos:起始位置,从第几个字符起始匹配正则表达式(默认为1);
match_pa:匹配模式('i'不区分大小写;'c'区分大小写;'n'许可句点(.)作为通配符去匹配换行符,若省略这一参数,则句点不匹配换行符;'m'将源串视作 多行即Oracle将^和$分别视作源串中任意位置任何行的开始和结束,而不是仅仅视作整个源串的开始或结束,若省略这一参数,则Oracle将源串视作一行;'x'忽略空格字符,默认情况下,空格字符与自身相匹配;默认为'c')。


其中,'i'和'c'很好理解,'n'、'm'和'x'咋理解,在这里,还望大神不吝赐教......







打赏鼓励一下!
论坛徽章:
480
榜眼
日期:2015-09-09 10:34:21秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12状元
日期:2015-11-23 10:04:09举人
日期:2015-11-23 10:04:09
2#
发表于 2017-11-16 00:55 | 只看该作者

回帖奖励 +2

这都是很浅显的中文嘛?哪里不懂?
n:
英文句号"."用于匹配单个字符,但是不匹配换行符。加上n参数则改变这一行为,允许它匹配换行符。
m:
本来^和$匹配的是整个字符串的开始和结尾。即使这个串有很多行,它也只有一个开始,一个结尾。加上m参数之后,每一行都被当作一个单独字符串来处理,这样就会有许多个开始和结尾。
x:
本来出现在patt中的一个空格就要匹配str中的一个空格。加上x参数之后空格被忽略,不参与匹配。

使用道具 举报

回复
论坛徽章:
0
3#
 楼主| 发表于 2017-11-16 07:07 | 只看该作者
意思我懂,问题是如何实现,可否举例?

使用道具 举报

回复
论坛徽章:
4
秀才
日期:2017-08-11 15:38:46秀才
日期:2017-09-08 11:09:50秀才
日期:2017-09-25 15:10:28秀才
日期:2017-09-25 15:10:28
4#
发表于 2017-11-16 08:04 | 只看该作者
WITH t(a) AS  (SELECT '111'||CHR(10)||'111' FROM dual)
SELECT regexp_count(a,'.{4}','1'),
            regexp_count(a,'.{4}','1','n'),
            regexp_count(a,'^.{3}$'),
            regexp_count(a,'^.{3}$',1,'m'),
            regexp_count(a,'^.{3} $',1),
            regexp_count(a,'^.{3} $',1,'xm')        --多个match_pa 同时起作用 互斥的比如 ic 匹配模式是后面的c
FROM t;

使用道具 举报

回复
论坛徽章:
0
5#
 楼主| 发表于 2017-11-16 16:51 | 只看该作者
却早已分离 发表于 2017-11-16 08:04
WITH t(a) AS  (SELECT '111'||CHR(10)||'111' FROM dual)
SELECT regexp_count(a,'.{4}','1'),
         ...

非常谢谢大神赐教!

使用道具 举报

回复
论坛徽章:
0
6#
发表于 2017-12-4 19:41 | 只看该作者
ITPUB有高手

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 |
  | | |
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表