Oracle层次查询

Oracle层次查询,第1张

概述Oracle层次查询的语法如下:下面根据两道“烧脑”的题具体来体现:1. 根据时间先后顺序,十二星座的英文名称用逗号串起来为'Aries,Taurus,Gemini,Cancer,Leo,Vi

Oracle层次查询的语法如下:

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

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

with t as (select 'ArIEs,Pisces' str from dual)
[...]

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

解法1:利用replace函数

with t as (select 'ArIEs,Pisces' str from dual)replace(str,,',chr(10)) constellation from t

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

解法2:利用层次查询

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

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

解法3:非层次查询

 dual),t1 select instr(str||12),t2 select pos,lag(pos,1); Font-weight: bold">0)over(order by pos) prev  t1)select substr(+-prev-1) constellation  select deptno,ename,lag(ename)over(partition by deptno by ename)lag_name  emp),1)">max(sys_connect_by_path(ename,1)">')) name from t start with lag_name is null connect by prior ename=lag_name group by deptno)cast(regexp_replace(name,1)">'',1); Font-weight: bold">1) as varchar2(40))nl from t1 by 1;

 

总结

以上是内存溢出为你收集整理的Oracle层次查询全部内容,希望文章能够帮你解决Oracle层次查询所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1153733.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存