最近碰到個很有意思的需求,需要把一些正整數區間拆分成一個一個的數字。
比如要將
起始數 終止數
14 16
21 25
35 35
43 46
拆分成
14
15
16
21
22
23
24
25
35
43
44
45
46
在百度上搜了半天只找到Oracle版本的腳本,鏈接:https://blog.csdn.net/daiqiulong2/article/details/48859485
無奈本人用的是SQLSERVER數據庫,只能自己動手用遊標解決了。腳本如下:
create table #原始數據 (起始數 int ,結束數 int)
insert into #原始數據 values (14,16)
insert into #原始數據 values (21,25)
insert into #原始數據 values (35,35)
insert into #原始數據 values (43,46)
create table #處理後數據 (num int)
DECLARE @起始數 int , @結束數 int
DECLARE cur CURSOR FAST_FORWARD READ_ONLY FOR
select 起始數,結束數 from #原始數據 ORDER BY 起始數 ASC
OPEN cur
FETCH NEXT FROM cur INTO @起始數,@結束數
WHILE @@FETCH_STATUS = 0
begin
declare @i int=@起始數
while @i <= @結束數
begin
insert into #處理後數據 values (@i)
set @i = @i+1
end
FETCH NEXT FROM cur INTO @起始數,@結束數
end
CLOSE cur
DEALLOCATE cur
select num from #處理後數據 ORDER BY num
drop table #原始數據
drop table #處理後數據