我需要为InvoiceID生成一列。我希望像这样保留这一栏的格式
INV0000001,
INV0000002,
.
.
.
.
INV0000010,
INV0000011,
.
. and so on.
正如您所看到的,此列随着最后一个索引而增加。 我怎样才能做到这一点。
我正在使用SQL Server 2012。
我搜索过,但无法找到,如何增加这样的数字。
答案 0 :(得分:6)
尝试使用computed column
MSDN
CREATE TABLE Yourtablename
(
ID int IDENTITY (1,1) NOT NULL,
InvoiceID AS 'INV'+ right('000000'+cast(ID as varchar(20)),7) PERSISTED
);
有关为何需要将计算列设为persisted
的详细信息
检查here
答案 1 :(得分:1)
尝试,这一个: - (完全动态)
Declare @NextInvoice Int = 0
Select @NextInvoice = Isnull(Max(Cast(Replace('INV0000011','INV','') As Bigint)),0) + 1
Select 'INV' + Left('0000000', (Len('0000000') -Len(@NextInvoice))) + Cast(@NextInvoice As Varchar(20))
答案 2 :(得分:0)
希望这对你有用
SELECT
INV + right('000' + an_auto_increment_column, 3) AS InvoiceID
FROM yourTable