`
maziheng
  • 浏览: 57898 次
  • 性别: 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 函数 结果集连接

    值得注意的是,尽管这个方法成功实现了将非树结构数据转化为路径字符串,但它并不是`sys_connect_by_path`函数的典型应用场景。通常,`sys_connect_by_path`用于具有明显父子关系的树形数据,而在这个例子中,作者...

    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 connect by level 应用

    `CONNECT BY`还可以结合`SYS_CONNECT_BY_PATH`函数,用于返回从起始节点到当前节点的路径。例如,我们可以添加一个路径列来显示每个员工的晋升路径: ```sql SELECT EMPLOYEE_NAME, MANAGER_NAME, SYS_...

    【Oracle】树状结构查询

    若需展示每个节点的完整路径,可以使用`SYS_CONNECT_BY_PATH`函数。这个函数会将从根节点到当前节点的路径串联起来,通常用特定字符(如'/')分隔各节点。 ```sql SELECT LEVEL, SYS_CONNECT_BY_PATH(a.ename, '/')...

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

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

    Oracle的Connect By使用示例

    ### Oracle的Connect By...此外,结合其他函数(如`LPAD`和`SYS_CONNECT_BY_PATH`)使用,可以让查询结果更加直观易懂。这对于开发人员来说是一项非常有用的技能,特别是在处理复杂的组织结构或者产品分类等场景时。

    MySQL实现类似于connect_by_isleaf的功能MySQL方法或存储过程

    在MySQL中,面对类似Oracle的`connect_by_isleaf`功能的需求,即查找并修改指定ID的所有子级记录,可以通过不同的方法来实现。由于MySQL没有内置的递归查询功能,我们通常需要利用临时表或者自连接来模拟递归。以下...

    sql实现多行合并一行

    在Oracle中,我们可以利用`CONNECT BY`和`SYS_CONNECT_BY_PATH`函数来实现这个目标。`CONNECT BY`用于建立树形连接,而`SYS_CONNECT_BY_PATH`则可以沿着这些连接路径收集数据。 以下是一个详细的步骤解释: 1. ...

    oracle-tree-sql.rar_oracle

    理解并熟练掌握`CONNECT BY`、`PRIOR`、`sys_connect_by_path`等关键字和函数,可以帮助我们更高效地处理树形结构的数据。在实际应用中,还需要考虑性能优化,如合理设计表结构和使用索引,以确保查询的效率。

    oracle10g,9i多行合并一行函数

    这里介绍一种使用`sys_connect_by_path()`函数结合`connect by`语法的方法。 **示例代码:** ```sql SELECT name, MAX(REPLACE(SUBSTR(sys_connect_by_path(course, '*'), 2), '*', ';')) AS courses FROM ( ...

    oracle多行合并一行

    2. **使用`SYS_CONNECT_BY_PATH`函数**:该函数可以递归地遍历每一组中的所有记录,并生成一个由逗号连接的字符串。 3. **使用`ROW_NUMBER()`与`PARTITION BY`结合**:再次使用`ROW_NUMBER()`函数,并结合`PARTITION...

    oracle-sql

    1. **SYS_CONNECT_BY_PATH 函数**: 这个函数自Oracle 9i起引入,主要用于层次查询,它能够生成从父节点到当前行的路径。例如,在给出的SQL语句中,`sys_connect_by_path(tname, ' ')`将`tname`字段的值连接起来,...

    Oracle中分组后拼接分组字符串.pdf

    最后,我们使用 `sys_connect_by_path()` 函数来拼接分组后的数据,并使用 `start with` 子句和 `connect by` 子句来实现递归操作: ```sql select No, ltrim(max(sys_connect_by_path(Value, ';')), ';') as ...

    oracle sql 行列转换

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

    多行合并为一行的SQL语句.docx

    这个例子展示了如何使用SQL层级查询功能(如`CONNECT BY`和`SYS_CONNECT_BY_PATH`)来合并具有相同编号的多行数据为一行。这种方式适用于那些希望将分散的数据整合成紧凑格式的需求场景。此外,通过调整`SYS_CONNECT...

    Oracle中分组后拼接分组字符串[文].pdf

    Oracle 中分组后拼接分组字符串 在 Oracle 中,分组后拼接...本文介绍了如何在 Oracle 中使用 `sys_connect_by_path` 函数与 `start` 递归实现分组后拼接分组字符串。该方法可以应用于各种数据分析和报表生成场景。

    取得oracle中某表的所有字段名

    `SYS_CONNECT_BY_PATH`函数将每个字段名连接起来,最后使用`MAX`和`substr`函数去除第一个字符(因为路径开始时有一个额外的逗号)。 注意,在上述查询中,`&表名`是一个绑定变量,意味着你需要在实际运行查询时...

Global site tag (gtag.js) - Google Analytics