oracle号码段拆开,知道号段起止,如何选择该号段内的所有号码?
有表如下:
CREATE TABLE T20
(
ID NUMBER(2),
S NUMBER(5),
E NUMBER(5)
);
INSERT INTO T20 ( ID, S, E ) VALUES (
1, 10, 11);
INSERT INTO T20 ( ID, S, E ) VALUES (
2, 1, 5);
INSERT INTO T20 ( ID, S, E ) VALUES (
3, 88, 100);
COMMIT;
[php]
select a.id, a.s, a.e,b.dis, a.S+b.dis-1 h from
t20 a,
(select rownum dis from
(select max(e-s)+1 gap from t20)
connect by rownum<=gap) b
where a.e>=a.s+b.dis-1
order by a.id, 4
运行结果:
ID S E DIS H
---------- ---------- ---------- ---------- ----------
1 10 11 1 10
1 10 11 2 11
2 1 5 1 1
2 1 5 2 2
2 1 5 3 3
2 1 5 4 4
2 1 5 5 5
3 88 100 1 88
3 88 100 2 89
3 88 100 3 90
3 88 100 4 91
3 88 100 5 92
3 88 100 6 93
3 88 100 7 94
3 88 100 8 95
3 88 100 9 96
3 88 100 10 97
3 88 100 11 98
3 88 100 12 99
3 88 100 13 100
..............
[/php]
相关文章:
oracle号码段拆开,知道号段起止,如何选择该号段内的所有号码?
有表如下:
CREATE TABLE T20
(
ID NUMBER(2),
S NUMBER(5),
E NUMBER(5)
);
INSERT INTO T20 ( ID, S, E ) VALUES (
1, 10, 11);
INSERT INTO T20 ( ID, S, E ) VALUES (
2, 1, 5);
INSERT INTO T20 ( ID, S, E ) VALUES (
3, 88, 100);
COMMIT;
[php]
select a.id, a.s, a.e,b.dis, a.S+b.dis-1 h from
t20 a,
(select rownum dis from
(select max(e-s)+1 gap from t20)
connect by rownum<=gap) b
where a.e>=a.s+b.dis-1
order by a.id, 4
运行结果:
ID S E DIS H
---------- ---------- ---------- ---------- ----------
1 10 11 1 10
1 10 11 2 11
2 1 5 1 1
2 1 5 2 2
2 1 5 3 3
2 1 5 4 4
2 1 5 5 5
3 88 100 1 88
3 88 100 2 89
3 88 100 3 90
3 88 100 4 91
3 88 100 5 92
3 88 100 6 93
3 88 100 7 94
3 88 100 8 95
3 88 100 9 96
3 88 100 10 97
3 88 100 11 98
3 88 100 12 99
3 88 100 13 100
..............
[/php]
相关文章: