Sql server 插入带有前缀和递增数字的行

Sql server 插入带有前缀和递增数字的行,sql-server,tsql,azure-sql-database,Sql Server,Tsql,Azure Sql Database,我想插入300行,其中用户名由前缀和从001-300(或仅1-300)递增的数字组成 例如:PRC001、PRC002、PRC003、PRC004 我将如何在一个单独的声明中做到这一点 编辑:我正在使用SSMS 2016和Microsoft Azure数据库 Insert Into YourTable (SomeID) Select Top 300 Format(Row_Number() Over (Order By Number),'PRC000') From master..spt_valu

我想插入300行,其中用户名由前缀和从001-300(或仅1-300)递增的数字组成

例如:PRC001、PRC002、PRC003、PRC004

我将如何在一个单独的声明中做到这一点

编辑:我正在使用SSMS 2016和Microsoft Azure数据库

Insert Into YourTable (SomeID)
Select Top 300 Format(Row_Number() Over (Order By Number),'PRC000') From master..spt_values 
另一个选择是创建一个临时理货表

;with cte0(N) As (Select 1 From (Values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) N(N)),
      cteN(N) As (Select Row_Number() over (Order By (Select NULL)) From cte0 N1, cte0 N2, cte0 N3) 
Select Top 300 Format(N,'PRC000') From cteN
您也可以使用任何表(包含300多条记录)

插入将是


是否要生成这些行并将其插入表中

然后,您可以尝试以下方法:

DECLARE @i INTEGER
SET @i = 1

WHILE @i <= 300
BEGIN
    PRINT 'PRC' + right('00' + cast(@i AS VARCHAR), 3)

    /* add your insert here... */
    SET @i = @i + 1
END

非常好的解决方案!但这只适用于2012年及更高版本:-)答案很好,但我忘了提到我使用的是SQL Azure,因此我无法引用主数据库。您知道专门针对Azure的解决方案吗?您可以在该解决方案中创建数字表case@Powellellogram请参见第三个选项,将任何表格作为临时理货表。该技术将比上面提到的John Cappelletti方法慢得多。
DECLARE @i INTEGER
SET @i = 1

WHILE @i <= 300
BEGIN
    PRINT 'PRC' + right('00' + cast(@i AS VARCHAR), 3)

    /* add your insert here... */
    SET @i = @i + 1
END
PRC001
PRC002
PRC003
PRC004
PRC005
PRC006
...
PRC298
PRC299
PRC300