已知两个整型参数,并且第二个参数值比第一个大,求整型列中不存在于这两个参数区间的任意一个数字? RRS feed

  • 问题

  • 已知两个整型参数,并且第二个参数值比第一个大,求数据表中的整型列内不存在于由这两个参数作为范围区间的任意数字?

    例如给定参数,1,100。 求整型列中1到100之间不存在的任意一个数字,不用存储过程,如果范围内都没有了返回null

    • 已编辑 Trian555 2019年4月25日 9:44
    2019年4月25日 9:43


  • Hi Trian555,



    declare @min int=1

    declare @max int=100

    select case when @max-@min=1 then null

    else cast((rand()*(@max-@min-2)+@min+1) as int) end result


    Hope this could help you .

    Best regards,

    Dedmon Dai

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact

    2019年4月26日 2:06
  • select abs(checksum(newid())) %(b-a+1)+a from( select a=1, b=1000)data
    2019年4月26日 3:00
  • 有一个最简单的思路,用一些方法来生成一列限定范围的连续数字(例如cte)。然后依据该select语句对那个数据表的整型列用 not in (select numbers  from test)语句进行子查询,然后用top 1 可以得到一个不存在的数字
    2019年4月29日 1:35