sql - 在oracle中生成一个字母序列

标签 sql oracle plsql plsqldeveloper

我正在寻找一种生成字母序列的方法:

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/

相关文章:

java - 如何在 JDBC 中设置游标类型?

sql - 如何在 sql 中使用子查询创建约束?

oracle - 如何修改oracle 12c表空间的最大大小

mysql - 如何在酒店预订系统中准确获取取消预订房间的mysql查询?

sql - 建表查询

sql - 获取具有相同 id 值的最长字符串的字段

oracle - 如何使用带有可变表名和条件的立即执行

java - Derby 查询非常慢

sql - 使用子查询提高 UPDATE 查询的性能

oracle - ORA-28040 : No matching authentication protocol