Sql server 插入带有前缀和递增数字的行
我想插入300行,其中用户名由前缀和从001-300(或仅1-300)递增的数字组成 例如:PRC001、PRC002、PRC003、PRC004 我将如何在一个单独的声明中做到这一点 编辑:我正在使用SSMS 2016和Microsoft Azure数据库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
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