如何在DB2中生成字母数字序列?

时间:2017-01-12 08:21:39

标签: sql db2

是否可以在DB2中生成字母数字序列?

我想创建一个以'AA'开头并以'99'结尾的字母数字序列,如下所示:

AA...AZ, A0...A9, BA...BZ, B0...B9, ... ZA...ZZ, 
Z0...Z9, 0A...0Z,   00...09, 1A...1Z, 10...19, ...9A...9Z, 90...99

2 个答案:

答案 0 :(得分:1)

这是一个递归查询,从0到1295迭代,DIV& MOD用于查找字母字符:

WITH n(n,x) AS
(
SELECT 0,'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT n+1,x FROM n WHERE n<1295
)
SELECT 
    SUBSTR(x, n/36 + 1,1) || SUBSTR(x, MOD(n,36) + 1,1) 
FROM n

答案 1 :(得分:0)

DB2具有CREATE SEQUENCE语句以允许创建数字序列。有功能可以获得已定义序列的当前值和下一个值。创建一个SQL function,在调用时,从序列中获取下一个值并将其转换为您的特定编码。