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层次查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)