创建从上一个索引增加的列

时间:2015-07-17 04:50:10

标签: sql sql-server sql-server-2012

我需要为InvoiceID生成一列。我希望像这样保留这一栏的格式

INV0000001,
INV0000002,
.
.
.
.
INV0000010,
INV0000011,
.
. and so on. 

正如您所看到的,此列随着最后一个索引而增加。 我怎样才能做到这一点。

我正在使用SQL Server 2012。

我搜索过,但无法找到,如何增加这样的数字。

3 个答案:

答案 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
);

SQLFIDDLE DEMO

有关为何需要将计算列设为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