ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Oracle开发 » 这样的sql能否写出?

标题: [SQL] 这样的sql能否写出?
离线 guoq.lee
天凉了


来自 大连
精华贴数 0
个人空间 0
技术积分 762 (2635)
社区积分 55 (4891)
注册日期 2006-11-2
论坛徽章:20
生肖徽章2007版:鸡     
      

发表于 2008-9-18 15:33 


QUOTE:
原帖由 grubbyoo 于 2008-9-18 09:44 发表
create table tmp5 (id number(2),name varchar2(10),code varchar2(50));

insert into tmp5 values (1,'aaa','c001/c002/c007');
insert into tmp5 values (2,'bbb','c001/c003');
insert into tmp5 values (3,'ccc','c008/c0011/c029/c023');
insert into tmp5 values (4,'ddd','c102/c111/c112/c144/c167');

commit

select a.*,regexp_substr(a.code,'[^/]+',1,b.n)
from tmp5 a,
     (select rownum n from dual connect by rownum=b.n

学习了。

要是按下面这样写一定是错的,但是没看出来究竟是因为什么错的?
select a.*,regexp_substr(a.code,'[^/]+',1,level),level
from tmp5 a
connect by level<=length(regexp_replace(a.code,'[^/]+'))+1


__________________
I believe I can fly,I believe I can touch the sky,I believe!
只看该作者    顶部
在线/呼叫 newkid
资深新手
老程序员


来自 银河系
精华贴数 2
个人空间 0
技术积分 2756 (579)
社区积分 0 (121048)
注册日期 2004-6-26
论坛徽章:5
生肖徽章2007版:马生肖徽章2007版:鸡2008北京奥运纪念徽章:垒球2008北京奥运纪念徽章:羽毛球  
      

发表于 2008-9-18 23:04 


QUOTE:
原帖由 guoq.lee 于 2008-9-18 15:33 发表



学习了。

要是按下面这样写一定是错的,但是没看出来究竟是因为什么错的?
select a.*,regexp_substr(a.code,'[^/]+',1,level),level
from tmp5 a
connect by level

connect by 中没有指明上下级关系,相当于前一层和下一层之间做了迪卡尔积,所以不是你想像的结果。


__________________
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问