OracleLevel的用法.docx_第1页
OracleLevel的用法.docx_第2页
OracleLevel的用法.docx_第3页
OracleLevel的用法.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle 树查询 level的用法首先创建一张表menu记录菜单的层级情况。表结构如下:menu_id number,parent_id number,menu_name nvarchar2(20)插入数据:insert into MENU (MENU_ID, PARENT_ID, MENU_NAME)values (1, null, AAAA);insert into MENU (MENU_ID, PARENT_ID, MENU_NAME)values (2, 1, BBBB);insert into MENU (MENU_ID, PARENT_ID, MENU_NAME)values (3, 1, CCCC);insert into MENU (MENU_ID, PARENT_ID, MENU_NAME)values (4, 1, DDDD);insert into MENU (MENU_ID, PARENT_ID, MENU_NAME)values (5, 2, EEEE);insert into MENU (MENU_ID, PARENT_ID, MENU_NAME)values (6, 2, FFFF);insert into MENU (MENU_ID, PARENT_ID, MENU_NAME)values (7, 2, GGGG);insert into MENU (MENU_ID, PARENT_ID, MENU_NAME)values (8, 3, HHHH);commit;查询语句:select rpad( ,(level-1)*3)|menu_name from menuconnect by parent_id = prior menu_idstart with parent_id is nullconnect by 子句定义表中的各个黄是如何相互联系的start with 子句定义数据黄查询的初始起点level 表示查询深度=oracle LPAD 和 RPAD 收藏declare- Local variables herei integer;leftpad varchar(11);rightpad varchar(14);begin- Test statements hereSELECT LPAD(Hello!,8,0),RPAD(Hello!,8,0)into leftpad,rightpad FROM DUAL;dbms_output.put_line(leftpad|rightpad);end;执行结果后台:00Hello!在前面字符串的左边添加后面给定的字符串直到前一个字符串的长度等于中间参数8。Hello!00在字符串1的右边添加字符串2直到字符串1的长度等于i转:Oracle中Level函数的使用实例.2010-04-15 14:27 by Tracy., 1734 visits, 收藏, 编辑 Level is a pseudo column used with CONNECT BY and denotes the node level of the tree structure.For example, given the following department/sub-department layering architecture, we have an Accounting department within a Financials department within a Software department, that is,Software OS Financials Spreadsheets AccountingThe existence of a valid parent department can be enforced with a foreign key constraint on a department name column. This constraint ensures that IF a department has a parent, it is an existing department in the same table.CREATE TABLE dept (dept_name VARCHAR2(20) PRIMARY KEY, parent_name VARCHAR2(20),CONSTRAINT fk_dept2_parent_nameFOREIGN KEY (parent_name) REFERENCES dept);The result of SELECT * FROM DEPT is:DEP_NAME PARENT_NAME- -Software NULLOS SoftwareFinancials SoftwareSpreadsheet FinancialsAccounting FinancialsThe following SQL statement uses LEVEL to denote the level number of the node in the tree structure. SELECT LEVEL, parent_name, dept_name FROM dept CONNECT BY prior dept_name = parent_name START WITH dept_name = Software ORDER BY LEVEL;The result is: LEVEL PARENT_NAME DEPT_NAME- - - 1 Software 2 Software OS 2 Software Financials 3 Financials Spreadsheets 3 Financials AccountingOracle中使用connect by 来实现树状查询,其中可以使用level这个伪列来实现分层查询。具体使用如下:一张表menu记录菜单的层级情况。表结构如下:menu_id number,parent_id number,menu_name nvarchar2(20)首先select * from menu connect by menu_id = parent_id start with menu_id = 1;这样可以看到Oracle以树状结构产生结果。某些时候如果我只想要第2层的菜单项如何做呢。select * from (select level,menu_id,parent_id,menu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论