我是靠谱客的博主 幸福小笼包,最近开发中收集的这篇文章主要介绍oracle 部门 层次,Oracle层次查询,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Oracle层次查询的语法如下:

c5de5936e7fba077bd057146b900f042.png

下面根据两道“烧脑”的题具体来体现:

1. 根据时间先后顺序,十二星座的英文名称用逗号串起来为'Aries,Taurus,Gemini,Cancer,Leo,Virgo,Libra,Scorpio,Sagittarius,Capricorn,Aquarius,Pisces',请用带层次查询的sql替换下面的sql中的[...]部分,使该sql能将字符串拆分为12条记录。

with t as (select 'Aries,Taurus,Gemini,Cancer,Leo,Virgo,Libra,Scorpio,Sagittarius,Capricorn,Aquarius,Pisces' str from dual)

[...]

其实,该题有几种不同的解法。

解法1:利用replace函数

with t as (select 'Aries,Taurus,Gemini,Cancer,Leo,Virgo,Libra,Scorpio,Sagittarius,Capricorn,Aquarius,Pisces' str from dual)

select replace(str,',',chr(10)) constellation from t

但是这种解法有点瑕疵,题目要求输出12条记录,该解法虽然呈现的是12行,但实际只是一行记录。

解法2:利用层次查询

with t as (select 'Aries,Taurus,Gemini,Cancer,Leo,Virgo,Libra,Scorpio,Sagittarius,Capricorn,Aquarius,Pisces' str from dual)

select regexp_substr(str,'w{1,}',1,rownum) constellation from t,dual connect by rownum<=12

这里同时也用到了正则表达式

解法3:非层次查询

with t as (select 'Aries,Taurus,Gemini,Cancer,Leo,Virgo,Libra,Scorpio,Sagittarius,Capricorn,Aquarius,Pisces' str from dual),

t1 as (select instr(str||',',',',1,rownum)pos from t,dual connect by rownum<=12),

t2 as (select pos,lag(pos,1,0)over(order by pos) prev from t1)

select substr(str,prev+1,pos-prev-1) constellation from t,t2

这种解法花费了较多时间才想出。

2. 已知在11g下,下面sql

select deptno, cast(listagg(ename,',')within group(order by empno) as varchar2(50)) nl from emp group by deptno order by deptno;

的运行结果为:

DEPTNO NL

---------- --------------------------------------------------

10 CLARK,KING,MILLER

20 SMITH,JONES,SCOTT,ADAMS,FORD

30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES

请用层次查询写出在10g下可以达到得到同样结果的sql

with t as (select deptno,ename,lag(ename)over(partition by deptno order by ename)lag_name from emp),

t1 as (select deptno,max(sys_connect_by_path(ename,',')) name from t start with lag_name is null connect by prior ename=lag_name group by deptno)

select deptno,cast(regexp_replace(name,',','',1,1) as varchar2(40))nl from t1 order by 1;

带您了解Oracle层次查询

http://database.51cto.com/art/201010/231539.htm Oracle层次查询(connect by )是结构化查询中用到的,下面就为您介绍Oracle层次查询的 ...

Oracle 层次查询 connect by

oracle 层次查询 语法:       SELECT ... FROM            [WHERE condition]                             --过 ...

【转载】Oracle层次查询和分析函数

摘要 一组连续的数,去掉中间一些数,如何求出剩下的数的区间(即号段)?知道号段的起止,如何求出该号段内所有的数?知道一个大的号段范围和已经取过的号段,如何求出可用的号段?利用Oracle提供的强大的查 ...

Oracle层次查询和分析函数在号段选取中的应用

转自:http://www.itpub.net/thread-719692-1-1.html 摘要一组连续的数,去掉中间一些数,如何求出剩下的数的区间(即号段)?知道号段的起止,如何求出该号段内所有的 ...

Oracle - 层次查询

如果表中含有层次数据,可以通过使用层次查询有序地查看层次数据. 语法: condition:指一个或多个表达式和逻辑(布尔)运算符的组合,并返回TRUE.FALSE或UNKNOWNstart with ...

Oracle层次查询start with connect by

博客参考:https://www.cnblogs.com/jerryxing/articles/2339352.html start with connect by 层次查询(Hierarchical ...

oracle层次查询的陷阱

今天开发组同事找到我,说一个简单的层次查询非常慢,业务就是有一个存设备表连接关系的表,从node1连入,从node2连出,现在要找出node2的连出顺序,sql类似于: SELECT LEVEL ID ...

【转】 oracle 层次查询判断叶子和根节点

Oracle 9i判断是叶子或根节点,是比较麻烦的一件事情,SQL演示脚本如下: DROP TABLE idb_hierarchical; create TABLE idb_hierarchical ...

Oracle层次查询和with函数的使用

开发中大家应该都做过什么类似部门管理这样的功能,一般情况下一个部门下面还有下一级部门(子部门),这个层级就类似一棵树.这种情况下一般会把父级部门和子级部门分成2个或者多个表,这种算是比较常规的做法:有 ...

随机推荐

fsr

Front-end server render 前端在后端的渲染 1.采用express框架创建项目 express -e fsr cd fsr npm install 2.模板选用artTempla ...

【GOF23设计模式】观察者模式

来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_观察者模式.广播机制.消息订阅.网络游戏对战原理 package com.test.observer; import ja ...

cocos2d-x CCScale9Sprite

转自:http://www.cocos2dev.com/?p=295 前段时间看CCEditBox的时候,发现里面有个利用9宫格图缩放图片的,也就是缩放带圆角的图片. 这个比较有用处,很多游戏中有很多 ...

javascript——面向对象程序设计(4)

Android Studio IDE 所遇问题汇总

[窗体视图无法显示]     在/res/values/styles.xml文件中,修改一下内容

以delphi为例:TTest = recordc1: char;i1: Integer;c2: char;c3: Char;end;这个结构如果用sizeof取其占用的内存大小,是多少呢,是1+4+ ...

64位win7旗舰版搭建apache&plus;php&plus;mysql开发环境&lbrack;转&rsqb;

我建议把apache.php.mysql都安装在一个文件夹中,比如:web/apache.web/php.web/mysql 1.安装apache2.2.25,请查看win7下安装VC9版本的ap ...

js第一天 innerHTML和value 的区别

innerHTML在JS是双向功能:获取对象的内容 或 向对象插入内容:如:

这是内容
,我们可以通过 document ...

&dollar;O&lpar;n&plus;log&lpar;mod&rpar;&rpar;&dollar;求乘法逆元的方法

题目 LOJ #152. 乘法逆元 2 题解 一个奇技淫巧qwq.可以离线求乘法逆元,效率(O(n+log(mod))). 考虑处理出(s_n)表示(prod_{i=1}^na_i).以 ...

pjax 和 ajax 的区别

pjax 是一个 jQuery 插件,它通过 ajax 和 pushState 技术提供了极速的(无刷新 ajax 加载)浏览体验,并且保持了真实的地址.网页标题,浏览器的后退(前进)按钮也可以正常使 ...

最后

以上就是幸福小笼包为你收集整理的oracle 部门 层次,Oracle层次查询的全部内容,希望文章能够帮你解决oracle 部门 层次,Oracle层次查询所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部