使用MSSQL对字母数字发票编号进行连续递增

时间:2017-10-18 15:31:42

标签: c# sql-server

我有一张名为sales的表。在此表中,我有一列Invoice_Number。我想要实现的是以字母数字顺序获得发票号,即一个静态字母,然后是一个像A1,A2,A3 ......等变化的数字。我不想像其他例子中所见那样将A改为B.

我可以通过此查询获得数字增量:

Select IsNull(MAX([Invoice_Number] + 1), 1) from sales

但它不能在它之前添加字母。

感谢。

2 个答案:

答案 0 :(得分:1)

尝试使用类似的转换来返回varchar,让我知道这是否有帮助:)。

<script nomodule defer...

答案 1 :(得分:1)

您可以将现有的identity column用作种子。将其与computed column结合使用即可返回InvoiceNumber

-- Combine a seed with a computed column.
CREATE TABLE #Example
(
    Seed            INT IDENTITY(1,1),
    InvoiceNumber   AS 'A' + CAST(Seed AS VARCHAR(5)),
    Customer        VARCHAR(25)
);

-- Add some sample records.
INSERT INTO #Example
(
    Customer
)
VALUES

    ('A PLC'),
    ('B PLC'),
    ('C LTD')
;

-- Returns InvoiceNumbers A1, A2 & A3.
SELECT
    *
FROM
    #Example
;