我正在将一些数据转换为SQL,一列是今年最后2位数字格式的ID列,并且是数据库中最后输入行的增量+1。
所以今年第一次参赛将是15-001,下一次参赛将是15-002等。我似乎无法在网上找到一个如何做到这一点的例子?我不确定我是否可以在Computed Column中执行此操作?使用Sql Server 2012。
谢谢!
答案 0 :(得分:0)
我强烈建议您不要使用您所声明的格式的ID。你会遇到很多其他问题。您可以在存储过程或函数中使用此代码来获取下一个ID值。
DECLARE
@oldID varchar(8),
@newID varchar(8),
@temp varchar(8),
@number decimal,
@day int;
begin
SET @oldID = '15-555'; --select statement for last id
SET @day = YEAR(CURRENT_TIMESTAMP);
IF ( LEN(@oldID) = 6)
SET @temp = SUBSTRING(@oldID, 4, 6);
ELSE
SET @temp = SUBSTRING(@oldID, 3, 5);
SET @number = CAST(@temp AS Decimal(10, 0));
SET @number += 1;
SET @temp = CAST(@number AS varchar(8));
WHILE LEN(@temp) < 3
begin
SET @temp = '0' + @temp;
end
SET @newID = SUBSTRING(CAST(@day AS varchar(8)), 3, 4) + '-' + @temp;
print @newID --ID that you are looking for.
end
在15-999之后停止正常工作,如果这是您要求的,则不会重置为16-001。可以更改代码以解释这些问题。