将字符串与格式化数字组合,同时递增 1

Combining strings with formatted numbers while incrementing by one

我正在尝试用零填充@myid,但没有显示零。结果应采用这种格式(SC000290、SC000291 等)。显示的是SC290。谁能告诉我这是怎么做到的?

declare @myid int;
select @myid = 290

SELECT CONCAT('SC', FORMAT(@myid, '000000') + ROW_NUMBER() OVER(order by (select NULL))) as myid
FROM Table

问题是 row_number() returns 和 int 所以 + 是整数加法,而不是字符串连接。所以,一直使用 concat()

SELECT CONCAT('SC', 
              FORMAT(@myid, '000000'),
              ROW_NUMBER() OVER (order by (select NULL))
             ) as myid
FROM Table

我个人会避免使用 FORMAT,这是一个缓慢的功能,并且在您使用的 SQL 服务器版本中不可用;正如我在评论中所说:

FORMAT was introducted in SQL Server 2012, and you are using SQL Server 2008 (which, by the way, has been completely unsupported now for 18~ months, so long past time getting to upgrade path sorted).

相反,您可以使用 RIGHT 来获得您想要的值,这将适用于您正在使用的版本,并且在较新的版本上不会像 FORMAT 那样昂贵:

SELECT 'SC' + RIGHT(CONCAT('000000', ROW_NUMBER() OVER (ORDER BY (SELECT NULL))),6) --YOu should really use a proper column, not (SELECT NULL)
       {Other Columns}
FROM dbo.YourTable;