ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> Oracle >> Oracle中的正则表达式及函数详解

Oracle中的正则表达式及函数详解(4/5)

来源:网络整理     时间:2016-07-03     关键词:

本篇文章主要介绍了" Oracle中的正则表达式及函数详解",主要涉及到方面的内容,对于Oracle感兴趣的同学可以参考一下: 转载请注明出处:http://blog.csdn.net/anxpp/article/details/51550486,谢谢!1、概述 相信大家对正则表...

  1. select(length('MY INFO: Anxpp,23,and boy')-length(replace('MY INFO: Anxpp,23,and boy','an')))/length('an')from users;

    REGEXP_REPLACE是REPLACE的增强版,支持正则表达式,扩展了一些功能。

    语法:

  1. regexp_replace(source_string,pattern[,replace_string[,position[,occurrence[,match_parameter]]]])

    replace_string表示用什么来替换source_string中与pattern匹配的部分。

    occurrence为非负整数,0表示所有匹配项都被替换,为正数时替换第n次匹配。

    其他参数在前面都已经介绍过了。

    例1:

    想象这样一个场景:有一个分布式的爬虫,负责抓取网页的程序已经将数据存入数据库,而当前负责处理的程序需要从其中读取其中的一些数据,包括电话号码。号码一般是11为,前3位区号,中间4位表示交换机,再加上后面4位,格式也不能确定,我们可以试着用下面的SQL来读取,生成我们想要的格式:

  1. select regexp_replace('电话:023 5868-8888 邮箱:anxppp@163.com',
  2. '.*([[:digit:]]{3})([^[:digit:]]{0,2})([[:digit:]]{4})([^[:digit:]]{0,2})([[:digit:]]{4}).*',
  3. '(\1)\3\5'
  4. ) phone from users;

    该例返回:(023)58688888

    "\1"、“\3”、“\5”分别表示第1、3、5个数据集。其他的,大家慢慢看就能看懂了。

    配合where子句,可以限制要返回的行。

    2.5、REGEXP_COUNT

    REGEXP_COUNT函数返回在源串中出现的模式的次数,作为对REGEXP_INSTR函数的补充。

    虽然COUNT是一个集合函数,操作的是行组,但是REGEXP_COUNT是单行函数,分别计算每一行。

    语法:

相关图片

相关文章