How to generate a range of numbers between two numbers?

后端 未结 30 2273
执念已碎
执念已碎 2020-11-22 10:16

I have two numbers as input from the user, like for example 1000 and 1050.

How do I generate the numbers between these two numbers, using

30条回答
  •  没有蜡笔的小新
    2020-11-22 10:29

    recursive CTE in exponential size (even for default of 100 recursion, this can build up to 2^100 numbers):

    DECLARE @startnum INT=1000
    DECLARE @endnum INT=1050
    DECLARE @size INT=@endnum-@startnum+1
    ;
    WITH numrange (num) AS (
        SELECT 1 AS num
        UNION ALL
        SELECT num*2 FROM numrange WHERE num*2<=@size
        UNION ALL
        SELECT num*2+1 FROM numrange WHERE num*2+1<=@size
    )
    SELECT num+@startnum-1 FROM numrange order by num
    

提交回复
热议问题