合聚咖

合聚咖

ORACLE 伪列(level)、rpad/lpad、connectby、父节点子节点问题送分系列(一)

admin

LZ你好

这个rpad是右边填充的意思,但是填充的是

但这个RPAD( ' ', 2*(LEVEL-1), '-' )意思是在空格右侧填充2*(LEVEL-1)个长度的横杠,这个你理解的好像没问题

level开始是从start with开始算起的,你这里就是START WITH UPPERDEPID IS NULL,因为根据父ID,你这个为空的就是最顶层,这个你也可以改成

START WITH UPPERDEPID =0 看下效果

树形结构的意思,我简单给你说一下

家里有爷爷,爷爷有两个儿子,每个儿子又有两个儿子

那么画图出来就是这样

CONNECT_BY_ROOT 从你start with的开始算起,最顶端结点就是总经办,这个你看下查询结果就能看出来

CONNECT_BY_ISLEAF 如果下边还有子节点,就为0,无子节点了就是1,按照我给你发的图,也就是四个孙子下边都没节点了,他们最后都显示1,上边爷爷和儿子都显示0

level,就是爷爷是最顶端,为1,依次类推

给你举例子的图画的难看了点哈,见笑了

晕,你补充了好多啊,你先看吧,哪不懂你再问,我再给你解释