select rownum as r from dual connect by rownum<=10
与
select rownum as r from dual connect by rownum!=10
的结果一致.
均为
1 12 23 34 45 56 67 78 89 910 10
所以connect by rownum 就相当于一个for循环的 最后停止条件.
并且自动的认为 rownum 从1开始循环,每次自动加1.
所以,当你写
select rownum from dual connect by rownum !=1的时候,会出现一致循环下去.
因为rownum 从1开始循环,第一次不判断?,第一次循环完 rownum=2.下次为3,一直不等于1.所以一直不能停止.
所以这个方法可以用在日期上.
SELECT ROWNUM,ROWNUM+to_date('20170310','yyyyMMdd') FROM dual CONNECT BY ROWNUM != 365
--有一个好处是,日期格式会变成正确的格式,
1 2017/3/112 2017/3/123 2017/3/134 2017/3/145 2017/3/156 2017/3/167 2017/3/178 2017/3/189 2017/3/1910 2017/3/2011 2017/3/2112 2017/3/2213 2017/3/2314 2017/3/2415 2017/3/2516 2017/3/2617 2017/3/2718 2017/3/2819 2017/3/2920 2017/3/3021 2017/3/3122 2017/4/123 2017/4/224 2017/4/325 2017/4/426 2017/4/527 2017/4/628 2017/4/729 2017/4/830 2017/4/931 2017/4/1032 2017/4/1133 2017/4/12
转载于:https://www.cnblogs.com/xuedexin/articles/6669266.html
