如何在SQL的1列中插入多个范围的序号?

问题描述 投票:1回答:1

我已经在表中创建了一个空列“ ZipCodes”。我想用以下数字自动填充此列:1000-39004000-9999

因此,所有这些序列号都必须在1列中,以1000开头,以9999结尾,但我不想包含范围3901-3999。如何在SQL中执行此操作?

sql autofill sequential
1个回答
0
投票

这里是执行此操作的一种方法。这将生成1000到10000之间的数字,而忽略3901和4000之间的数字。

with row_generator
  as (
         select *
           from master..spt_values
      )
  ,ten_thousand_rows
   as (
        select top 10000
               row_number() over(order by (select null))+1000 as rnk
          from row_generator a   
          join row_generator b
            on 1=1
        )
select rnk
  from ten_thousand_rows
where rnk between 1000 and 10000
  and NOT(rnk between 3901 and 3999)

此后您可以做一个

 with row_generator
      as (
             select *
               from master..spt_values
          )
      ,ten_thousand_rows
       as (
            select top 10000
                   row_number() over(order by (select null))+1000 as rnk
              from row_generator a   
              join row_generator b
                on 1=1
            )
    insert
      into dest_table(autofill_column)
    select rnk
      from ten_thousand_rows
    where rnk between 1000 and 10000
      and NOT(rnk between 3901 and 3999)
© www.soinside.com 2019 - 2024. All rights reserved.