Oracle树形结构数据-相关知识总结
Oracle树形结构数据--基本知识
1.数据组成
2.基本查询
2.1.查询某节点及该节点下的所有子孙节点
SELECT *

SELECT *

2.查询某节点及该节点上的所有祖先节点
SELECT *

3.按层级展示某节点下的所有子节点(LEVEL的使用;注意where条件放在start with之前,order by 放最后)
/*在树形结构节点很多的情况一下,一般会采用异步刷新的方式进行,在默认加载的情况下,会展开到某个层级。
这种情况下,不但要获取某个节点的祖先节点,还需要获取祖先节点的兄弟节点,在这种情况下可以通过level进行*/
FROM QIANCODE.TREE_TABLE_BASIC T
WHERE LEVEL >= 1
START WITH T.ID = '111'
CONNECT BY PRIOR T.ID = T.PID
ORDER BY LEVEL, ID;

注意:level显式的是伪列,是按当前查询出来的结果进行层级排序。
所以这里在原数据中层级为4的班主任在当前查询中level为2.
4.显式出树的级别查询
FROM QIANCODE.TREE_TABLE_BASIC T
START WITH T.PID='-99999'
CONNECT BY PRIOR T.ID=T.PID;

4.1.RPAD()和LPAD()函数的使用
RPAD(string,length,[pad_string])、LPAD(string,length,[pad_string]):从左或往右使用指定的字符串pad_string对string进行填充;
pad_string可省略,默认使用空格填充;
length表示字符最终返回的总长度。
如下查询:
select rpad('aabbcc',2,'hh') from dual; --返回 ‘aa’
select rpad('aabbcc',12,'hh') from dual; --返回 ‘aabbcchhhhhh’
4.2.区别函数lengthb(string)和length(string)
lengthb(string):计算string所占的字节长度:返回字符串的长度,单位是字节。
length(string):计算string所占的字符长度:返回字符串的长度,单位是字符。
SELECT LENGTH('中国') FROM DUAL; -- 返回 2
注:一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为三。
4.3.巧妙利用函数RPAD(),展示更整齐
SELECT T.ID
FROM QIANCODE.TREE_TABLE_BASIC T
START WITH T.PID='-99999'
CONNECT BY PRIOR T.ID=T.PID;

5.其他常用
SELECT T.ID
,T.NAME
,T.PID
,CONNECT_BY_ISLEAF LEAF -- 判断是否为叶结点,O否1是
,SYS_CONNECT_BY_PATH(T.NAME,'|') PATH -- 遍历的路径
,CONNECT_BY_ROOT(T.NAME) ROOT -- 遍历根结点
--,CONNECT_BY_ISCYCLE ISCYCLE -- 查询树是否有环路【使用connect_by_iscycle时,必须加上nocycle关键字】
,level LEVELS -- 结点所属树的层数
FROM QIANCODE.TREE_TABLE_BASIC T
START WITH T.ID='1'
CONNECT BY PRIOR T.ID=T.PID;

适用情景:验证配置树是否有环,并查出是哪个结点
1.修改表数据,使得表数据出现环路
update QIANCODE.TREE_TABLE_BASIC T set t.pid='11111' where t.id='1';commit;
2.再执行以上connect_by_root()查询语句报错 ——> ora-01436:“用户数据中的connect by 循环”
出现环路时问题解决如下:
SELECT t.id
FROM QIANCODE.TREE_TABLE_BASIC T
START WITH T.ID='1'
CONNECT BY nocycle PRIOR t.id=t.pid;

FROM QIANCODE.TREE_TABLE_BASIC T
START WITH T.ID=''
CONNECT BY nocycle PRIOR t.pid=t.id;

4.恢复数据
update QIANCODE.TREE_TABLE_BASIC T set t.pid='-99999' where t.id='1';commit;
Oracle树形结构数据-相关知识总结的更多相关文章
- Oracle树形结构数据---常见处理情景
Oracle树形结构数据---常见处理情景 1.查看表数据结构 SELECT * FROM QIANCODE.TREE_HIS_TABLE T ORDER BY T.NODE_LEVEL; ...
- Oracle DBLINK的相关知识整理
一.DBLINK(Database Link)概念 dblink,顾名思义就是数据库的链接.当我们要跨本地数据库访问另一个数据库中的表的数据时,在本地数据库中就必须要创建远程数据库的dblink,通过 ...
- oracle的DBMS_JOB相关知识
http://langgufu.iteye.com/blog/1179235 查看当前定时任务 select job,next_date,next_sec,failures,broken from u ...
- 数据库相关知识积累(sqlserver、oracle、mysql)
数据库相关知识积累(sqlserver.oracle.mysql) 1. sqlserver :断开所有连接: (还原数据库) 1.数据库 分离 2. USE master GO ALTER DAT ...
- oracle 树形SQL
oracle树形sql查询实例分析 通过此SQL语句 [sql] select * from tree 查看原始数据如下: 我们要想得到如下的一个树形查询结果如下图所示(包含 R ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- 移动WEB像素相关知识
了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...
- listener监听器的相关知识
从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...
- UIViewController相关知识
title: UIViewController 相关知识date: 2015-12-13 11:50categories: IOS tags: UIViewController 小小程序猿我的博客:h ...
随机推荐
- FLASK实现上传下载功能
#!-*-coding=utf-8-*- # from flask import Flask # # app = Flask(__name__) # # # @app.route('/') # def ...
- JavaScript实现邮箱后缀提示功能
先来个基础的 需求 根据下面需求实现如示意图所示的邮箱输入提示功能,注意,根据要求只需实现下面功能 当用户没有任何输入时,提示框消失 当用户输入字符后,显示提示框,并且把用户输入的内容自动拼上邮箱后缀 ...
- 03_Adaptive注解
[Adaptive注解] package com.alibaba.dubbo.common.extension; import com.alibaba.dubbo.common.URL; import ...
- Android中获取TextView行数
项目中发现,如果直接通过TextView.getLineCount()方法获取行数时,总是0,研究发现,setText()后立即调用getLineCount(), 这时TextView还未完成meas ...
- 实验三:klee的执行重现机制(示例分析)
结论性内容: (1)如果是在程序中使用klee_make_symbolic,则可以使用下列脚本进行重现. export LD_LIBRARY_PATH=/home/klee/xiaojiework/k ...
- C# GDI+ 利用 Rectangle GraphicsPath 判断 矩形或多边形 图形关系
最近在做一些简单的图像对比工作,总结了一些GDI+对象的使用方式,记录下来共享给大家使用. 判断Rectangl与多边形的关系 /// <summary> /// 是否包含输入范围 /// ...
- PHP 如何实现网址伪静态
Apache的 mod_rewrite是比较强大的,在进行网站建设时,可以通过这个模块来实现伪静态. 主要步骤如下: 1.检测Apache是否开启mod_rewrite功能 可以通过php提供 ...
- linu常用命令链接
linux命令大全ps命令详解: http://www.jb51.net/LINUXjishu/151851.html Linux禁止ping以及开启ping的方法: http://www.cnblo ...
- 1874 football game(三分法and method to compute the area of trianngle)
FInd the max area. 1. 三分法 2. NAN (not comparable with number) http://acm.timus.ru/problem.aspx?space ...
- tq2440 jlink连接问题
由于工作转向做嵌入式linux平台上的手台通信协议开发,所以想系统的学习一下嵌入式linux的开发流程. 向同事借了tq2440的板子来玩,一边看书,一边做实验,看的书是<嵌入式linux基础教 ...