我正在寻找一种生成字母顺序的方法:
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
您可以使用 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 */
这是一种选择:
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>