Sql server將正整數區間拆分紅一個一個的數

最近碰到個頗有意思的需求,須要把一些正整數區間拆分紅一個一個的數字。sql

好比要將數據庫

起始數    終止數ide

14           16.net

21            25blog

35            35get

43            46it


拆分紅table

14class

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 #處理後數據
相關文章
相關標籤/搜索