数据是这个形式的01!01.01!01.01.01
现在要求把每个!号之间的字符串的第一个01替换成01.02
替换后的格式如下01.02!01.02.01!01.02.01.01
------解决方案--------------------
利用!拆分,分别处理,然后再进行合并
select replace(
wmsys.wm_concat(substr(str,1,instr(str,'01')-1)
------解决方案--------------------
'01.02'
------解决方案--------------------
substr(str,instr(str,'01')+2))
,',','!') str
from
(select REGEXP_SUBSTR('01!01.01!01.01.01', '[^!]+', 1, LEVEL) STR
from dual
CONNECT BY LEVEL <= REGEXP_COUNT('01!01.01!01.01.01', '!') + 1)
------解决方案--------------------
如果!后紧跟着就是01就好办了,那样的话不需要正则
substr(replace('!'
------解决方案--------------------
字段名,'!01','!01.02'),2)
------解决方案--------------------
SELECT REGEXP_REPLACE('01!01.01!01.01.01','(^01
------解决方案--------------------
!01)','\1.02') FROM DUAL;