SQL Server中的字母数字序列

kjv*_*kjv 6 sql-server alphanumeric sequence

我需要在SQL Server 2008中生成一个3个字符的字母数字序列,如下所示:

001,
002,
...,
999,
A01,
A02,
...,
A99,
B01,
B02,
...,
Z99
Run Code Online (Sandbox Code Playgroud)

序列中的下一项将从存储过程生成并存储在NCHAR(3)表列中.

Eri*_*ric 8

要获得下一个序列,您可以添加Id类似的

WITH seq AS
(
    SELECT 
        ROW_NUMBER() OVER (ORDER BY x.alpha + y.number + z.number) AS Id,
        CONVERT(nchar(3), x.alpha + y.number + z.number) AS Result
    FROM 
        (
            VALUES 
            ('0'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9'),
            ('A'), ('B'), ('C'), ('D'), ('E'), ('F'), ('G'), ('H'), ('I'), ('J'), 
            ('K'), ('L'), ('M'), ('N'), ('O'), ('P'), ('Q'), ('R'), ('S'), ('T'), 
            ('U'), ('V'), ('W'), ('X'), ('Y'), ('Z')
        ) x(alpha),
        (
            VALUES 
            ('0'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9')
        ) y(number),
        (
            VALUES 
            ('0'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9')
        ) z(number)
    WHERE
       NOT (NOT x.alpha BETWEEN '1' AND '9' AND y.number = '0' AND z.number = '0')
)
-- Uncomment to see all results
--SELECT * FROM seq

SELECT Result FROM seq WHERE Id = (SELECT Id + 1 FROM seq WHERE Result = 'Z01')
Run Code Online (Sandbox Code Playgroud)

结果

Z02
Run Code Online (Sandbox Code Playgroud)

满计数= 3573 = 999 +(26*99)