将值从范围插入表中

时间:2018-05-16 02:14:19

标签: sql tsql sql-server-2017

我正在尝试对表进行插入(比如table1),我想在追加char或int声明后插入一系列数字?

离。 适用于范围1-10

abc1,
abc2,
abc3,
abc4,
.
.
.

任何想法?

4 个答案:

答案 0 :(得分:1)

我比我更喜欢Gordon的答案,但是它对我没有用,因为SQL Server仅允许有限量的递归(根据错误消息为100级)。

这是我使用while()循环的解决方案:


Declare @Current int = 1
Declare @End int = 20
Declare @Strings as table(Text varchar(5))

WHILE @Current <= @End
BEGIN  
    Insert Into @Strings Values('abc' + Cast(@Current as varchar(2)))
    Set @Current = @Current + 1
END  

Select * From @Strings


答案 1 :(得分:0)

为此,我喜欢递归CTE:

with nums as (
      select @rangestart as n
      union all
      select n + 1
      from nums
      where n < @rangeend
     )
insert into table1(col)
    select 'abc' + cast(nums.n as varchar(255))
    from nums;

如果您的号码超过100个,则应使用MAXRECURSION选项。此外,任何数字表都可以用于相同的目的。

答案 2 :(得分:0)

with nums as (
  select 1 as n
  union all
  select n + 1 as n
  from nums
  where n <= 9
 )

插入table1(col)     选择'abc'+ cast(nums.n as varchar(255))     来自nums;

从table1中选择*

答案 3 :(得分:0)

Gordon Linoff解决方案效果很好!只进行了一次小修改。 对于那些寻求未来解决方案的人。

DECLARE
    @rangestart INT,
    @rangeend INT
SET @rangestart = 1
SET @rangeend = 10
;
with nums as (
      select @rangestart as n
      union all
      select n + 1
      from nums
      where n < @rangeend
     )
insert into Table1(Colum)
    select 'abc' + cast(nums.n as varchar(255))
    from nums;

在我的测试表中,artist列是我的测试表。 enter image description here