`
maziheng
  • 浏览: 57101 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

SYS_CONNECT_BY_PATH函数的用法

阅读更多

1、脚本

create table T_TREE(
  S_ID   NUMBER,
  F_ID   NUMBER,
  S_NAME VARCHAR2(20)
);
comment on column T_TREE.S_ID
  is '本节点ID';
comment on column T_TREE.F_ID
  is '父节点ID';
comment on column T_TREE.S_NAME
  is '本节点名称';
insert into t_tree values(1,null,'root');
insert into t_tree values(2,1,'node-010');
insert into t_tree values(3,1,'node-020');
insert into t_tree values(4,3,'node-011');
insert into t_tree values(5,4,'node-011');
commit;

 2、用SYS_CONNECT_BY_PATH执行SQL语句

SELECT CONNECT_BY_ISLEAF ISLEAF,
       S_NAME,
       LTRIM(SYS_CONNECT_BY_PATH(S_NAME, '$'), '$') PATH
  FROM T_TREE
CONNECT BY PRIOR S_ID = F_ID
 START WITH F_ID IS NULL;

 

其实SYS_CONNECT_BY_PATH这个函数是oracle9i才新提出来的!它一定要和connect by子句合用!

第一个参数是形成树形式的字段,第二个参数是父级和其子级分隔显示用的分隔符!
START WITH 代表你要开始遍历的的节点!CONNECT BY PRIOR 是标示父子关系的对应!

其中CONNECT_BY_ISLEAF ISLEAF 是判断数据是否是叶节点,如果是的话 值是1,还有子节点的话值是0;

3、查询结果

 

  • 大小: 13.5 KB
分享到:
评论

相关推荐

    oracle sys_connect_by_path 函数 结果集连接

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

    ORACLE查询树型关系(connect_by_prior_start_with)

    使用 START WITH 和 CONNECT BY 子句可以实现 SQL 的层次查询,并且可以使用 SYS_CONNECT_BY_PATH 函数和 CONNECT_BY_ROOT、CONNECT_BY_ISLEAF、CONNECT_BY_ISCYCLE 等伪列函数来增强层次查询的能力。

    oracle列合并的实现方法

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

    如何取得一个表的所有字段名用逗号分割

    取得一个表的所有字段名用逗号分割 在 Oracle 数据库中,取得一个表的所有字段名用...使用 SYS_CONNECT_BY_PATH 函数可以轻松地取得一个表的所有字段名用逗号分割,这种方法可以广泛应用于各种数据处理和分析场景中。

    oracle sql 行列转换

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

    oracle多行转为字符串总结

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

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

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

    Oracle 数据库特殊查询总结

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

    程序员的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金典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金典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 ...

    pyPackage

    python公共函数包 1. IO-数据输入输出包 1.1。达梦7数据库 ## 添加 DM7Python 包到工程目录 import sys, os baseDir = os.path.dirname(os.path.abspath('__file__')).replace('\\','/') # 工程所在目录 sys.path....

    程序员的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 ...

    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学习笔记

    说明:设置每页显示的行数目,默认是14,用法和linesize一样,至于其他环境参数的使用也是大同小异 sql>set pagesize 8 实际得到的不是14/8=2页 而是:14/(8-3)=5页 五Oracle用户的管理 4 1.创建用户 概述:在...

Global site tag (gtag.js) - Google Analytics