插入带前缀和递增编号的行

时间:2016-12-13 14:19:28

标签: sql-server tsql azure-sql-database

我想插入300行,其中Username包含一个前缀,后跟一个001-300(或1-300)的递增数字。

例如:PRC001,PRC002,PRC003,PRC004

我如何在一份声明中这样做?

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

2 个答案:

答案 0 :(得分:6)

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条记录)

Select Top 300 Format(Row_Number() Over (Order By (Select null)),'PRC000') From AnyLargerTable

插入将是

enter image description here

答案 1 :(得分:-1)

您想生成这些行并将它们插入表中吗?

然后你可以尝试这样的事情:

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