【从本人QQ空间迁移】oracle高级迭代查询

本文介绍了一种使用Oracle数据库进行层级查询的方法,通过SQL语句实现父子节点的关系展示,并利用connect by prior start with、replace和sys_connect_by_path函数完成层级结构的构建。此方法适用于Oracle9i及以上版本。
         select id,parent_id,name,level,connect_by_isleaf,connect_by_iscycle,replace(sys_connect_by_path(id,'|'),'|','')
         from table   connect by nocycle prior id=parent_id start with  id='xxx' order sibings by id
         函数一:connect by prior    start with 
                       标准迭代查询,可以从上级到最底层,也可以从底层到最上级,主要是id=parent_id 或parent_id=id的区别
         函数二:replace(col,str1,str2)
                       基本的字符串替换函数,将col列中的str1替换为str2
         函数三:sys_connect_by_path(id,'|')
                       获取全节点路径,以|分割
         字段:level,connect_by_isleaf,connect_by_iscycle,nocycle,sibings  
                   level  层级,默认从1开始
                   connect_by_isleaf  判断是否叶子节点,0—否,1—是
                   connect_by_iscycle  判断是否有循环存在,存在则为1,否则为0
                   nocycle   迭代时,按不循环查询
                   sibings    按照同级节点排序
         备注:该方法适用于oracle 9i及以上版本,以及db2 for i系列产品,其它暂不适用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值