求oracle正则表达式一例

muou2008 2010-08-24 10:54:54
数据:dad(disc_id = 90910 and disc_item_id in (91793,92375)) and (disc_id = 91648 and disc
_item_id in (92625,92626)) or (disc_id = 50001610 and disc_item_id =50002164) or
(disc_id = 50005959 and disc_item_id =50003118)add

最后需要的结果如下:
(disc_id = 90910 and disc_item_id in (91793,92375))(disc_id = 91648 and disc
_item_id in (92625,92626))(disc_id = 50001610 and disc_item_id =50002164)(disc_id = 50005959 and disc_item_id =50003118)add

说明:需要找出数据中的所有第一级括号里面的内容。
...全文
126 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
WXHDSWH 2010-08-26
  • 打赏
  • 举报
回复
mark and wait
多壮志 2010-08-26
  • 打赏
  • 举报
回复
select regexp_replace(x,'(^([A-Z]{1,}\()|(\)[A-Z]{1,})$)','',1,0,'i') from dual
muou2008 2010-08-26
  • 打赏
  • 举报
回复
谢谢 楼上的!
liang8976 2010-08-26
  • 打赏
  • 举报
回复
学习一下。。。。。
xman_78tom 2010-08-26
  • 打赏
  • 举报
回复

declare
s varchar2(300);
begin
s:='dad(disc_id = 90910 and disc_item_id in (91793,92375)) and
(disc_id = 91648 and disc_item_id in (92625,92626)) or
(disc_id = 50001610 and disc_item_id =50002164) or
(disc_id = 50005959 and disc_item_id =50003118)add';

select regexp_replace(s,'[^\(\)]*(\(.*\))[^\(\)]*','\1')||regexp_substr(s,'[^\(\)]*$') into s from dual;
dbms_output.put_line(s);
end;
/

muou2008 2010-08-25
  • 打赏
  • 举报
回复
等待高手出场!!
muou2008 2010-08-25
  • 打赏
  • 举报
回复
继续等待...
碧水幽幽泉 2010-08-24
  • 打赏
  • 举报
回复
路过,帮顶了!
虫洞 2010-08-24
  • 打赏
  • 举报
回复
正则啊
软肋

17,086

社区成员

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

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