ITPub博客

首页 > 数据库 > Oracle > Oracle Regexp_Replace

Oracle Regexp_Replace

原创 Oracle 作者:abstractcyj 时间:2016-07-21 16:45:06 0 删除 编辑
 SELECT regexp_replace('13,453,5', '([0-9]{2,3})', '''\1''') FROM dual;


SQL> SELECT regexp_replace('13,453,5', '([0-9]{2,3})', '''\1''') FROM dual;


REGEXP_REPLA
------------
'13','453',5


这里的\1表示向后引用匹配
要讲数字替换成前后均有单引号,正则表达式应该两侧都有括号, 否则,\1会被认为是普通字符串。



后向引用 
正则表达式的一个有用的特性是能够存储子表达式供以后重用;这也被称为后向引用(在表 10 中对其进行了概述)。它允许复杂的替换功能,如在新的位置上交换模式或显示重复出现的单词或字母。子表达式的匹配部分保存在临时缓冲区中。缓冲区从左至右进行编号,并利用 \digit 符号进行访问,其中 digit 是 1 到 9 之间的一个数字,它匹配第 digit 个子表达式,子表达式用一组圆括号来显示。 
接下来的例子显示了通过按编号引用各个子表达式将姓名 Ellen Hildi Smith 转变为 Smith, Ellen Hildi。 
SELECT REGEXP_REPLACE(
'Ellen Hildi Smith',
'(.*) (.*) (.*)', '\3, \1 \2')
FROM dual
REGEXP_REPLACE('EL
------------------
Smith, Ellen Hildi 


参考:https://oracle-base.com/articles/misc/regular-expressions-support-in-oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm
http://blog.itpub.net/30218320/viewspace-1724251/

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8520577/viewspace-2122367/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
曾从事java方向开发多年。近年已经转入数据库方向。主要擅长SQL优化,Oracle数据库问题诊断,Oracle备份与恢复等。服务于医药物流,医院等行业

注册时间:2010-01-26

  • 博文量
    602
  • 访问量
    1091583