connect by rownum < 10 或者!=10

select rownum as r from dual connect by rownum<=10

select rownum as r from dual connect by rownum!=10

的结果一致.

均为

1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 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/11
2 2017/3/12
3 2017/3/13
4 2017/3/14
5 2017/3/15
6 2017/3/16
7 2017/3/17
8 2017/3/18
9 2017/3/19
10 2017/3/20
11 2017/3/21
12 2017/3/22
13 2017/3/23
14 2017/3/24
15 2017/3/25
16 2017/3/26
17 2017/3/27
18 2017/3/28
19 2017/3/29
20 2017/3/30
21 2017/3/31
22 2017/4/1
23 2017/4/2
24 2017/4/3
25 2017/4/4
26 2017/4/5
27 2017/4/6
28 2017/4/7
29 2017/4/8
30 2017/4/9
31 2017/4/10
32 2017/4/11
33 2017/4/12

 

posted on 2017-04-05 16:20  雪的心  阅读(1503)  评论(1编辑  收藏  举报

导航