星空网 > 软件开发 > 数据库

Oracle 递归函数与拼接

1 SELECT SUBSTR(SYS_CONNECT_BY_PATH(tb.name,'->'),3)  name2 FROM  table tb3     START  WITH nvl(tb.parentid,0)=04     CONNECT BY PRIOR ID=mt.parentid 5     ;

在Oracle中,SYS_CONNECT_BY_PATH函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示。



sys_connect_by_path(字段名, 2个字段之间的连接符号),注意这里的连接符号不要使用逗号,oracle会报错,
如果一定要用,可以使用replace替换一下,方法如下 REPLACE(字段名,原字符,',')。 
还有,SYS_CONNECT_BY_PATH这个函数是oracle9i才新提出来的!它要和connect by子句合用。

例子:

 1、创建表

 1 CREATE TABLE SC_DISTRICT 2 ( 3  ID     NUMBER(10)         NOT NULL, 4  PARENT_ID NUMBER(10), 5  NAME    VARCHAR2(255 BYTE)     NOT NULL 6 );

2、添加数据

 1 INSERT INTO SC_DISTRICT(ID,NAME) VALUES(1,'四川省'); 2  3 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(2,1,'巴中市'); 4 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(3,1,'达州市');  5  6 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(4,2,'巴州区'); 7 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(5,2,'通江县'); 8 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(6,2,'平昌县'); 9 10 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(7,3,'通川区');11 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(8,3,'宣汉县');12 13 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(9,8,'塔河乡');14 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(10,8,'三河乡');15 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(11,8,'胡家镇');16 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(12,8,'南坝镇');17 18 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(13,6,'大寨乡');19 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(14,6,'响滩镇');20 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(15,6,'龙岗镇');21 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(16,6,'白衣镇');

生成表与数据如下:

Oracle 递归函数与拼接       

 1 查询巴中市下行政组织递归路径 2 SELECT ID,   NAME,  PARENT_ID, 3     SUBSTR(SYS_CONNECT_BY_PATH(NAME,'->'),3)  NAME_PATH 4 FROM  SC_DISTRICT 5     START  WITH NAME='巴中市' 6     CONNECT BY PRIOR ID=PARENT_ID 7      8 查询结果: 9 ID  NAME  PARENT_ID  NAME_PATH10 2  巴中市  1  巴中市11 4  巴州区  2  巴中市->巴州区12 5  通江县  2  巴中市->通江县13 6  平昌县  2  巴中市->平昌县14 13  大寨乡  6  巴中市->平昌县->大寨乡15 14  响滩镇  6  巴中市->平昌县->响滩镇16 15  龙岗镇  6  巴中市->平昌县->龙岗镇17 16  白衣镇  6  巴中市->平昌县->白衣镇

原文链接:http://www.cnblogs.com/wanghonghu/archive/2012/08/31/2665945.html




原标题:Oracle 递归函数与拼接

关键词:oracle

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

解决6%增值税问题的有效途径:https://www.kjdsnews.com/a/1322073.html
解读阿联酋vat官方网站:细节和最新发展:https://www.kjdsnews.com/a/1322074.html
捷克:vat申请流程及其影响:https://www.kjdsnews.com/a/1322075.html
揭示vat总体收入增加的隐藏机制:https://www.kjdsnews.com/a/1322076.html
江西企业必知:法国vat注册联系方式:https://www.kjdsnews.com/a/1322077.html
简化海外远程销售:shopify用户的vat申请金额要求:https://www.kjdsnews.com/a/1322078.html
武陵山大裂谷周围景点 武陵山大裂谷周围景点图片:https://www.vstour.cn/a/411233.html
南美旅游报价(探索南美洲的旅行费用):https://www.vstour.cn/a/411234.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流