在实际应用中, 树结构数据的应用是很广泛的, 如书的目录结构, 组织部门的分级等!!!!!

如一本书的目录

name

code

P_code

目录

MULU

0

第一章

zh_1

MULU

第一节

ji_1_1

zh_1

第一回

hu_1_1_1

ji_1_1

第二回

hu_1_1_2

ji_1_1

第三回

hu_1_1_3

ji_1_1

第二节

ji_1_2

zh_1

第一回

hu_1_2_1

ji_1_2

第二回

hu_1_2_2

ji_1_2

第三回

hu_1_2_3

ji_1_2

第二章

zh_2

MULU

……..

如果我们想要一次统计一些东西, 但是要分 目录, 章,节,回 !  相关的东西只和回有直接的关系!

那我们的数据就必须是这样的

A  对应 第一章第二节第三回,  转换为:  A   第一章, 第二章第二节, 第一章第二节第三回 这样就行了!!!

oracle 有专门的方法展现树数据, 这个相对其他类型的数据库方便很多!!!

select tt.code, tt.name,tt.p_code,

code_path,name_path,

regexp_substr(code_path,'[^/]+[A-Za-z0-9_]*',1,1) lev1_code,

regexp_substr(name_path,'[^/]+[A-Za-z0-9_]*',1,1) lev1_name,

regexp_substr(code_path,'[^/]+[A-Za-z0-9_]*',1,2) lev2_code,

regexp_substr(name_path,'[^/]+[A-Za-z0-9_]*',1,2) lev2_name,

regexp_substr(code_path,'[^/]+[A-Za-z0-9_]*',1,3) lev3_code,

regexp_substr(name_path,'[^/]+[A-Za-z0-9_]*',1,3) lev3_name

from (

select t.*,level,CONNECT_BY_ROOT code as root,CONNECT_BY_ISLEAF ,

SYS_CONNECT_BY_PATH (code, '/') code_path,

SYS_CONNECT_BY_PATH (name, '/') name_path

from book_mulu t

START WITH p_code='0'

CONNECT BY NOCYCLE t.p_code = PRIOR t.code) tt

我这里是用到了oracle 的connect by 这个语法, 网上很多资料的.

要从树的上面往下查, 还是树的下面往上查呢, 这个关键字 Prior(优先的) 的位置就是关键了!!! 男士女士, 女士优先, 那么男士  女士prior, 女士占有prior. 所以, 从树的上面往下查, 下面的优先, 所以prior 给code; 树的下面往上查, 上面的优先, prior 给p_code, 这样就很容易理解了!!! NOCYCLE 是针对环状循环的问题数据的!!!

level, connect_by_root, connect_by_isleaf, CONNECT_BY_ISCYCLE 这四个是connect by 语法中特有的关键字, 可能还有其他的, 我暂时不清楚!!!

level 是树的级数, 从1开始!(这里的树指查询出来的数据树,该数据树可能是整棵树的一部分而已);

connect_by_root 是树的首节点;

connect_by_isleaf 是指当前节点是否为叶子, 1 是; 0 否;

CONNECT_BY_ISCYCLE 如果在当前行中引用了某个父亲节点的内容并在树中出现了循环, 会显示“1”; 否则就显示“0”;

sys_connect_by_path 函数, 可能在一些行列转换的处理中,大家就使用过了, 很好的一个函数, 能把树的目录层次串联起来!!!!

如  SYS_CONNECT_BY_PATH (name, '/')      结果就是: 第一章/第二节/第三回.

有了这些, 我们再对数据进行整合, 在有明确层次树的情况下, 再结合一些oracle 的字符串函数, 就很方便地把层次分列了!

oracle 根据符号分列,oracle 树结构数据层次分列显示相关推荐

  1. oracle 计算 符号优先级,oracle 表达式运算符优先级

    oracle 有以下几种运算符 算数运算符 连接运算符 比较(关系)运算符 逻辑运算符 1.算数运算符 算数运算符有四个, + , - ,* ,/. SELECT sal,sal*12 from em ...

  2. Linux系统中Oracle数据库使用SELECT语句检索数据(1)实例应用

    Linux系统中Oracle数据库使用SELECT语句检索数据(1)实例应用 1,首先切换到Oracle用户,并进入数据库#sql / as sysdba2,启动数据库,并连接样例及表格,启动命令#s ...

  3. 设置oracle每行显示字符个数,Oracle一列的多行数据拼成一行显示字符-Oracle

    Oracle一列的多行数据拼成一行显示字符 oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数. www.2cto.com 先介绍:WMSYS.WM_CONCAT 例: ...

  4. Oracle用imp和exp实现数据的导入和导出

    使用方法如下: Imp username/password@connect_string param=value - exp username/password@connect_string para ...

  5. oracle stalestats_深入理解oracle优化器统计数据(Optimizer Statistics)

    理解oracle优化器统计数据 首先来介绍oracle数据库使用基于规则优化器(RBO)来决定如何执行一个sql语句.基于规则优化器顾名思义,它是遵循一组规则来判断一个sql语句的执行计划.这组规则是 ...

  6. Oracle笔记(操作Scott中的数据)

    文章目录 1 数据库相关概念 2 数据库的发展阶段 3 Oracle相关介绍 3.1 软件相关介绍 3.2 软件目录结构介绍 3.3 软件原理 3.3.1 软件体系架构 3.3.2 本地网络服务配置 ...

  7. oracle sql 符号,Oracle的SQL语句中如何处理‘’符号

    Oracle的SQL语句中如何处理'&'符号 在Oracle中,如果在sql中出现'&'符号,会被自动转义: 而被要求输入在&符号后跟随的字符串的值,例如: update ta ...

  8. Oracle11 expdp0734,oracle 11g expdp impdp 跨平台迁移数据

    以下只在AIX 6.1 和RedHat 5.4上实验成功 迁出环境:AIX 6.1 ORACLE 11.2.0.1 迁入环境:REDHAT 5.4 ORACLE 11.2.0.3 一.导出用户gree ...

  9. Oracle 物理结构(六) 文件-数据文件

    Oracle 物理结构(六) 文件-数据文件 转载于:https://www.cnblogs.com/xibuhaohao/p/10917338.html

最新文章

  1. 一步一步玩控件:自定义TabControl——从山寨Safari开始
  2. 杭电1024 Max Sum Plus Plus状压dp(java)
  3. [转载] 常用应届生Java开发笔试面试题(更新中)
  4. c# 计算机ip,C# 获取电脑的IP,网关,MAC,计算机名。。
  5. Java web中使用JQuery加载某页面后,自动调用Servlet(GET方法,POST方法)
  6. Linux软件 github,Linux下使用GitHub记
  7. 使用VS Code开发asp.net core (上)
  8. 报表中表达式的全局集合(Visual Studio 报表设计器)
  9. 读取文件时,程序经历了什么?
  10. spark sql 给dataframe列重命名的三种方式
  11. 高通工具过滤_高通QXDM|高通诊断监视工具(Qualcomm QXDM)下载v3.14 官方版 - 欧普软件下载...
  12. CocosCreator查找图片引用
  13. LeetCode刷题-中心对称数
  14. 如何将Word中数据转换为excel表格
  15. 笔记本电脑触控板操作小结
  16. 使用PYTHON图像识别实现车牌号码识别的程序
  17. 京东数科java一面【过】
  18. 阿里云服务器SSH连接自动断开问题
  19. 02操作符(Operators)操作符
  20. mp4转换成gif无损画质,MP4转换gif一键搞定

热门文章

  1. LWN:GFP 标志介绍以及移除 __GFP_ATOMIC!
  2. golang基础教程
  3. enable multi-tenancy on openstack pike
  4. 计算机处理器采用多核,电脑处理器多核心与高主频哪个更重要【详细介绍】
  5. MySQL高性能索引设计
  6. 《那些年啊,那些事——一个程序员的奋斗史》——100
  7. 简单照片墙制作html5
  8. 什么是winpe,winpe系统有什么作用?
  9. winpe装双系统linux_制作win7+ubuntu +winPE+CDlinux多系统启动U盘
  10. window7调用计算机,教你查看win7系统电脑使用记录的具体方法