加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle with 语句实现递归查询

发布时间:2020-12-12 13:32:53 所属栏目:百科 来源:网络整理
导读:Oracle with 语句可以实现如同connect by 语句一样的序列: connect by用法 使用rownum实现1到10的序列。 select?rownum?from?dual?connect?by?rownum=10; 使用level实现1到10的序列。 select?level?from?dual?connect?by?level=10; with 可实现同样功能用法:
Oracle with 语句可以实现如同connect by 语句一样的序列:


connect by用法

使用rownum实现1到10的序列。

select?rownum?from?dual?connect?by?rownum<=10;

使用level实现1到10的序列。

select?level?from?dual?connect?by?level<=10;


with 可实现同样功能用法:

with?c(n)?as
(select?1?from?dual
union?all
select?n+1?from?c
where?n<10)
select?n?from?c;


更多connect by 用法参考:https://blog.csdn.net/wang_yunj/article/details/51040029/


查询当前时间往前的12周的开始时间、结束时间、第多少周:

select sysdate - (to_number(to_char(sysdate - 1,'d')) - 1) - ? ? ? (rownum - 1) * 7 as startDate,? ? ? sysdate + (7 - to_number(to_char(sysdate - 'd'))) - ? ? ? (rownum - as endDate,? ? ? to_number(to_char(sysdate,0); word-break: break-all;">'iw')) - rownum + 1 as weekIndex ?from dualconnect by level<= 12;--将level改成rownum可以实现同样的效果

字符串分割,由一行变为多行:

  1. 比如说分割01|02|03|04这种有规律的字符串

select?REGEXP_SUBSTR('01|02|03|04',?'[^|]+',?1,?rownum)?as?newport?
?from?dual?
connect?by?rownum?<=?REGEXP_COUNT('01|02|03|04',?'[^|]+');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读