`

oracle SYS_CONNECT_BY_PATH 函数实现将从父节点到当前行内容以“path”或者层次元素列表的形式显示出来

阅读更多

先创建一个树形结构的表t_test

create table T_TEST
(
	ID    NUMBER,
	PID   NUMBER,
	TITLE VARCHAR2(30)
)
tablespace TEST
pctfree 10
initrans 1
maxtrans 255
storage
(
	initial 64K
	minextents 1
	maxextents unlimited
);

insert into T_TEST (ID, PID, TITLE) values (1, 0, '一一');
insert into T_TEST (ID, PID, TITLE) values (2, 0, '二二');
insert into T_TEST (ID, PID, TITLE) values (3, 1, '一三');
insert into T_TEST (ID, PID, TITLE) values (4, 1, '一四');
insert into T_TEST (ID, PID, TITLE) values (5, 3, '一三五');
insert into T_TEST (ID, PID, TITLE) values (6, 3, '一三六');
insert into T_TEST (ID, PID, TITLE) values (7, 2, '二七');
insert into T_TEST (ID, PID, TITLE) values (8, 2, '二八');
insert into T_TEST (ID, PID, TITLE) values (9, 7, '二七九');
insert into T_TEST (ID, PID, TITLE) values (10, 7, '二七十');
commit;

 
sys_connect_by_path 函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示 
 
--子id=父id 倒树型结构
--父id=子id   正树型结构  

先看子id=父id 倒树型结构例子:

select level ,id,pid,title,sys_connect_by_path( title , '/' ) as path
from t_test
--where level=3
start with id= 1
connect by prior id = pid order by pid; 

 
显示结果:



再看父id=子id   正树型结构 例子:

select level ,id,pid,title,sys_connect_by_path( title , '/' ) as path
from t_test
--where level=3
start with pid= 3
connect by prior pid = id order by pid; 

 结果显示:

分享到:
评论

相关推荐

    oracle sys_connect_by_path 函数 结果集连接

    今天无意间,看connect by的使用,看到了sys_connect_by_path的用法,算是给我一个另类的惊喜了,sys_connect_by_path(columnname, seperator) 也可以拼出串来,不过这个函数本身不是用来给我们做这个结果集连接用...

    oracle列合并的实现方法

    很多场合我们都会用到...sys_connect_by_path(字段名, 2个字段之间的连接符号),这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下,方法如下 REPLACE(字段名,原字符,’,’)。这个

    oracle多行转为字符串总结

    介绍了将多行转为字符串的三种方案,并比较了三种方案的执行效率. 1.sys_connect_by_path + start with ... connect by ... prior + 分析函数 2.自定义Function/SP 3.使用 Oracle 10g 内置函数 wmsys.wm_concat

    oracle sql 行列转换

    行列转换,sys_connect_by_path,row_number等函数的用法

    oracle函数介绍(8) 综述.doc

     单值函数多数处理单个或多个值但只返回单个值(SYS_CONNECT_BY_PATH除外)。  聚合函数多数处理多行并且各分组序列分别返回成一行。  分析函数多数处理多行并且每条记录均会有返回。  需要注意不同类型函数可...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    10.4.2 SYS_CONNECT_BY_PATH函数 279 10.4.3 CONNECT_BY_ROOT运算符 281 10.4.4 CONNECT_BY_ISCYCLE伪列和NOCYCLE参数 284 10.4.5 CONNECT_BY_ISLEAF伪列 287 10.5 小结 291 第11章 半联结和反联结 292 11.1 ...

    Oracle 数据库特殊查询总结

    1. 查询本节点及本节点以下的所有节点: ...SELECT RPAD( ' ', 2*(LEVEL-1), '-' ) || DEPNAME "DEPNAME",CONNECT_BY_ROOT DEPNAME "ROOT",CONNECT_BY_ISLEAF "ISLEAF",LEVEL ,SYS_CONNECT_BY_PATH(DEPNAM

    韩顺平oracle学习笔记

    说明:该命令可以将sql*plus屏幕上的内容输出到指定文件中去。 案例:sql>spool d:\b.sql 并输入 sql>spool off 4(交互式命令 (1), 说明:可以替代变量,而该变量在执行时,需要用户输入。如:sql>select * from emp...

    程序员的SQL金典6-8

     11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数  11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 ...

    程序员的SQL金典7-8

     11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数  11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 ...

    程序员的SQL金典4-8

     11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数  11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 ...

    程序员的SQL金典3-8

     11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数  11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 ...

    程序员的SQL金典.rar

     11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数  11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 ...

Global site tag (gtag.js) - Google Analytics