oracle正则表达式匹配问题

Dabase_Student 2016-07-05 09:41:12
求教各位大神
现在有一个字段是一个大字段,格式类似于{{{111,222,333,444,555,666},{777,888,999,aaa,bbb,ccc},{ddd,eee,fff,ggg,hhh,iii}}}
现在想要得到444,666和aaa,ccc和ggg,iii这种数据,需要怎么去写这个SQL查询?用了regexp_substr这个函数,但是效果不理想,只能匹配到444,666,后面的aaa,ccc这种就匹配不到了。
...全文
414 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghx287524027 2016-07-06
  • 打赏
  • 举报
回复
引用 3 楼 z123zjf 的回复:
第2个括号位置错了,自己改下

with t as(select '{{{111,222,333,444,555,666},{777,888,999,aaa,bbb,ccc},{ddd,eee,fff,ggg,hhh,iii}}}' str from dual)
select regexp_replace(str,'{+([^,]+,){3}([^,]+,)[^,]+,([^,}]+)}+','\2\3') 
 from t
结果形式如下: 444,666,aaa,ccc,ggg,iii
z123zjf 2016-07-06
  • 打赏
  • 举报
回复
第2个括号位置错了,自己改下
z123zjf 2016-07-06
  • 打赏
  • 举报
回复
with t as(select '{{{111,222,333,444,555,666},{777,888,999,aaa,bbb,ccc},{ddd,eee,fff,ggg,hhh,iii}}}' str from dual) select regexp_replace(str,'{+([^,]+,){3}[^,]+,([^,]+),([^,}]+)}+','\2,\3') from t
ghx287524027 2016-07-06
  • 打赏
  • 举报
回复
首先用replace 或者regexp_replace 将源字符串处理成统一格式的数据

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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