当前位置: 代码迷 >> Oracle技术 >> oracle regexp_replace 字符串值替换有关问题?
  详细解决方案

oracle regexp_replace 字符串值替换有关问题?

热度:195   发布时间:2016-04-24 08:06:50.0
oracle regexp_replace 字符串值替换问题???
v_CodeDetail:='Z56*20141116*7*003*1^Z53*20141116*7*004*1^Z53*20141116*7*004*1^Z54*20141116*7*006*30';


怎么样将Z53*20141116*7*004*1,3^Z53*20141116*7*004*1  中怎么在1,3 数字前加7  如:Z53*20141116*7*004*71,73  

谢谢!!
------解决思路----------------------
以下语句11G可用

WITH T AS 
(select 
'Z56*20141116*7*003*1^Z53*20141116*7*004*1,3^Z53*20141116*7*004*1,3^Z54*20141116*7*006*30' str
from dual) 
SELECT LISTAGG(
CASE WHEN REGEXP_LIKE(REGEXP_SUBSTR(STR,'[^/^]+',1,LEVEL),'Z53.*7.*1,3')
THEN
REPLACE(REGEXP_SUBSTR(STR,'[^/^]+',1,LEVEL),'1,3','71,73')
ELSE
REGEXP_SUBSTR(STR,'[^/^]+',1,LEVEL)
END
,'^') WITHIN GROUP(ORDER BY LEVEL) from T
CONNECT BY LEVEL<=REGEXP_COUNT(STR,'[^/^]+')
  相关解决方案