求一个替换字符串的正则表达式01!01.01!01.01.01变成01.02!01.02.01!01.02.01.01 本帖最后由 kmonkey 于 2014-08-25 16:15:37 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用!拆分,分别处理,然后再进行合并select replace( wmsys.wm_concat(substr(str,1,instr(str,'01')-1)||'01.02'||substr(str,instr(str,'01')+2)) ,',','!') strfrom (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) 测试结果STR01.02!01.02.01!01.02.01.01 如果!后紧跟着就是01就好办了,那样的话不需要正则substr(replace('!'||字段名,'!01','!01.02'),2) SELECT REGEXP_REPLACE('01!01.01!01.01.01','(^01|!01)','\1.02') FROM DUAL; ORACLE中sql基础问题!!!(急~~) oracleserviceorcl 假启动问题 ******** 急: 在oracle中可以对视图建立触发器吗 数据库服务器同步--高分求解 关于表的增幅,请教如何实现(新人本区第一贴^_^) oracle中求一sql C/S与B/S模式的讨论 系统资源不足,无法完全显示 求sql语句的写法 位数的问题! 关于dbvisualizer Pro 9使用问题? orcale单行子查询返回多行
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)
STR
01.02!01.02.01!01.02.01.01
substr(replace('!'||字段名,'!01','!01.02'),2)
SELECT REGEXP_REPLACE('01!01.01!01.01.01','(^01|!01)','\1.02') FROM DUAL;