失效链接处理 |
浅谈Oracle下connect by原理 PDF 下载
本站整理下载:
相关截图:
主要内容:
Connect by 在 oracle 中亦比较常用,在一些需求环境中仍是举足轻重的,特
别是在存在父子关系、层级关系情况下遍历的;当然也不仅限于此,其与正则匹
配搭配使用可简单实现一些较为复杂的业务需求,如将一串字符串以某个字符分
割,以表结果的形式展示。简单来说,其原理可理解为“深度优先遍历”;本文
将以一些简单的例子来阐述己之拙见,只阐述带不带起始节点条件的情况下。本
文所及例子中,忽略物理存储块的实际数据。
语法:
{ CONNECT BY [ NOCYCLE ] condition [AND condition]... [ START WITH condition ]
| START WITH condition CONNECT BY [ NOCYCLE ] condition [AND condition]...}
解释:
start with: 指定起始节点的条件。
connect by: 指定父子行的条件关系。
prior: 查询父行的限定符,格式: prior column1 = column2 or column1 = prior
column2 and ...
nocycle: 若数据表中存在循环行,那么不添加此关键字会报错,添加关键字后,
便不会报错,但循环的两行只会显示其中的第一条。
循环行: 该行只有一个子行,而且子行又是该行的祖先行。
connect_by_iscycle: 前置条件:在使用了 nocycle 之后才能使用此关键字,用于表
示是否是循环行,0 表示否,1 表示是。
connect_by_isleaf: 是否是叶子节点,0 表示否,1 表示是。
level: level 伪列,表示层级,值越小层级越高,level=1 为层级最高节点。
|