在oracle中生成带有数字的字母序列

问题描述 投票:0回答:2

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

A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3.....,Z9.

任何人都可以建议在 oracle 中执行此操作的便捷方法吗?

选择CHR(除+65)||CHR(余+65) 从 ( 选择 0 作为初始值, 0 AS 划分, 0 AS 余数 从双 联盟 选择级别作为初始值, TRUNC(LEVEL/26) AS 划分, MOD(LEVEL,26) AS 余数 从双 按级别连接 <= 675) ORDER BY initial_val

这个sql给出了输出

AA 到 AZ,BA 到 ZZ

sql oracle plsql plsqldeveloper
2个回答
0
投票

您可以使用 ROW_NUMBER() 分析函数:

Select Chr(divided + 65) || ROW_NUMBER() OVER(Partition By CHR(divided+65) Order By CHR(divided+65)) "COL"
From (  Select 0 AS initial_val, 0 AS divided
        From dual 
      UNION 
        Select LEVEL AS initial_val, TRUNC(LEVEL/9) AS divided
        From dual 
        CONNECT BY LEVEL <= 233
     ) 
/*   R e s u l t :
COL    
-------
A1
A2
A3
A4
...
...
B1
B2
B3
...
...
Z6
Z7
Z8
Z9      */

0
投票

这是一种选择:

SQL> with
  2  let as (select level l_let from dual
  3          connect by level <= ascii('Z') - ascii ('A') + 1
  4         ),
  5  dig as (select level l_dig from dual
  6          connect by level <= 9
  7         )
  8  select chr(65 + l_let - 1) || l_dig as value
  9  from let cross join dig;

VALUE
-----------------------------------------
A1
A2
A3
A4
A5
A6
A7
A8
A9
B1
B2
B3
B4
B5
B6
B7
B8
B9
C1
<snip>
Y4
Y5
Y6
Y7
Y8
Y9
Z1
Z2
Z3
Z4
Z5
Z6
Z7
Z8
Z9

234 rows selected.

SQL>
© www.soinside.com 2019 - 2024. All rights reserved.