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

张三疯1 2014-11-16 08:30:13
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

谢谢!!
...全文
572 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
张三疯1 2014-11-19
  • 打赏
  • 举报
回复
多谢。学习啦!!!
bw555 2014-11-17
  • 打赏
  • 举报
回复
语句中的'Z53.*7.*1,3'改为'Z53.*/*7/*.*1,3'更严格一点
bw555 2014-11-17
  • 打赏
  • 举报
回复
以下语句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,'[^/^]+')
张三疯1 2014-11-16
  • 打赏
  • 举报
回复
上面那种格式,是写死。动态得要怎么写。 Z53*20141116*7*004*1, 只更新 Z53开头 加7 后面数值1 有些可能是 Z53*20141116*7*004*1,3.4 这种格式
bw555 2014-11-16
  • 打赏
  • 举报
回复
规则写得不全吧,按现在描述直接replace就行了啊
replace(v_CodeDetail,'1,3','71,73')

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧