当前位置: 代码迷 >> Oracle技术 >> oracle正则表达式怎么实现全字符匹配替换
  详细解决方案

oracle正则表达式怎么实现全字符匹配替换

热度:48   发布时间:2016-04-24 08:26:17.0
oracle正则表达式如何实现全字符匹配替换
比如有一段字符串:
  TIMEID >= :V_TIMEID AND 
  TIMEID < :V_TIMEID_END
  PARTITION(:V_PART) A,
  PARTITION(:V_PART_MONTH) B,
  PARTITION(:V_PART_MONTH) C,
  PARTITION(:V_PART_MONTH) D
希望
把:V_TIMEID替换成201205010000,:V_TIMEID_END不能被替换,
把:V_PART替换成PART_20120501,:V_PART_MONTH不能被替换

REPLACE函数好像不能达到这个目的,REGEXP_REPLACE如何可以实现这个功能?

------解决方案--------------------
可以,你把TIMEID后面的空格看做字符串的一部分就可以了。“TIMEID ”然后把“TIMEID ”替换为“201205010000 ”。
同理,比把“V_PART)”看一个字符串,替换为“PART_20120501)”
------解决方案--------------------
没有编辑权限。。。
第一个需要修改为:“^TIMEID ”,以为“TIMEID ”会匹配后面的那个。
------解决方案--------------------
SQL code
with regexp_test(str) as (select 'V_TIMEID' from dualunionselect 'V_TIMEID_END' from dualunionselect 'V_PART' from dualunionselect 'V_PART_MONTH' from dual)select str,REGEXP_REPLACE(REGEXP_REPLACE(str,'^V_TIMEID$','201205010000'),'^V_PART$','PART_20120501') as replaced from regexp_test t /STR          REPLACED------------ --------------------V_PART       PART_20120501V_PART_MONTH V_PART_MONTHV_TIMEID     201205010000V_TIMEID_END V_TIMEID_END
  相关解决方案