我正在寻找一种生成字母序列的方法:
AA、AB、AC、AD、AE、...、ZZ
。
任何人都可以建议在 oracle 中执行此操作的便捷方法。
最佳答案
如果你想用纯 SQL 完成这似乎是可行的:
SELECT CHR(divided+65)||CHR(remainder+65)
FROM (
SELECT 0 AS initial_val,
0 AS divided,
0 AS remainder
FROM dual
UNION
SELECT LEVEL AS initial_val,
TRUNC(LEVEL/26) AS divided,
MOD(LEVEL,26) AS remainder
FROM dual
CONNECT BY LEVEL <= 675)
ORDER BY initial_val
它构建了一个包含 676 行的列表(必须使用并集,因为分层查询中的第一条记录从 1 而不是 0 开始)。
676 是 26 x 26,所以它然后除以数字以获得前导字母的数字(转换为主 SELECT
中的字母)并将该除法的其余部分用于尾随字母.
然后我添加 65 以获得字母表字母的 ascii 区域中的数字,然后就可以了。
希望对您有所帮助;
关于sql - 在oracle中生成一个字母序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34178177/