2
A
回答
3
这似乎是,如果你想在纯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区域,你去了。
希望它有帮助;
2
使用SQL MODEL子句生成行名单:
SELECT s
FROM (select chr(level + 65 - 1) pos1 from dual connect by level <= 26)
MODEL
DIMENSION BY (pos1 AS x, 'A' as y)
MEASURES ('--' AS s)
RULES UPSERT ALL ITERATE (26)
(
s[any, chr(iteration_number + 65)] = (CV(x) || CV(y))
)
ORDER BY s;
采样运行:
09/12/2015 19:55:26:SQL> SELECT s
2 FROM (select chr(level + 65 - 1) pos1 from dual connect by level <= 26)
3 MODEL
4 DIMENSION BY (pos1 AS x, 'A' as y)
5 MEASURES ('--' AS s)
6 RULES UPSERT ALL ITERATE (26)
7 (
8 s[any, chr(iteration_number + 65)] = (CV(x) || CV(y))
9 )
10 ORDER BY s;
S
--
AA
AB
AC
AD
AE
etc ...
然后我们可以运行LISTAGG简单聚集,如:
WITH t AS (
SELECT s
FROM (select chr(level + 65 - 1) pos1 from dual connect by level <= 26)
MODEL
DIMENSION BY (pos1 AS x, 'A' as y)
MEASURES ('--' AS s)
RULES UPSERT ALL ITERATE (26)
(
s[any, chr(iteration_number + 65)] = (CV(x) || CV(y))
)
ORDER BY s)
-- data generated, now aggregate
SELECT listagg(s, ', ') WITHIN GROUP (ORDER BY s) aggreg_list
FROM t;
结果:
09/12/2015 19:52:59:SQL> WITH t AS (
2 SELECT s
3 FROM (select chr(level + 65 - 1) pos1 from dual connect by level <= 26)
4 MODEL
5 DIMENSION BY (pos1 AS x, 'A' as y)
6 MEASURES ('--' AS s)
7 RULES UPSERT ALL ITERATE (26)
8 (
9 s[any, chr(iteration_number + 65)] = (CV(x) || CV(y))
10 )
11 ORDER BY s)
12 -- data generated, now aggregate
13 SELECT listagg(s, ', ') WITHIN GROUP (ORDER BY s) aggreg_list
14 FROM t;
AGGREG_LIST
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB, BC, BD, BE, BF, BG, BH, BI, BJ, BK, BL, BM, BN, BO, BP, BQ, BR, BS, BT, BU, BV, BW, BX, BY, BZ, CA, CB, CC, CD, CE, CF, CG, CH, CI, CJ, CK, CL, CM, CN, CO, CP, CQ, CR, CS, CT, CU, CV, CW, CX, CY, CZ, DA, DB, DC, DD, DE, DF, DG, DH, DI, DJ, DK, DL, DM, DN, DO, DP, DQ, DR, DS, DT, DU, DV, DW, DX, DY, DZ, EA, EB, EC, ED, EE, EF, EG, EH, EI, EJ, EK, EL, EM, EN, EO, EP, EQ, ER, ES, ET, EU,
EV, EW, EX, EY, EZ, FA, FB, FC, FD, FE, FF, FG, FH, FI, FJ, FK, FL, FM, FN, FO, FP, FQ, FR, FS, FT, FU, FV, FW, FX, FY, FZ, GA, GB, GC, GD, GE, GF, GG, GH, GI, GJ, GK, GL, GM, GN, GO, GP, GQ, GR, GS, GT, GU, GV, GW, GX, GY, GZ, HA, HB, HC, HD, HE, HF, HG, HH, HI, HJ, HK, HL, HM, HN, HO, HP, HQ, HR, HS, HT, HU, HV, HW, HX, HY, HZ, IA, IB, IC, ID, IE, IF, IG, IH, II, IJ, IK, IL, IM, IN, IO, IP, IQ, IR, IS, IT, IU, IV, IW, IX, IY, IZ, JA, JB, JC, JD, JE, JF, JG, JH, JI, JJ, JK, JL, JM, JN, JO, JP,
JQ, JR, JS, JT, JU, JV, JW, JX, JY, JZ, KA, KB, KC, KD, KE, KF, KG, KH, KI, KJ, KK, KL, KM, KN, KO, KP, KQ, KR, KS, KT, KU, KV, KW, KX, KY, KZ, LA, LB, LC, LD, LE, LF, LG, LH, LI, LJ, LK, LL, LM, LN, LO, LP, LQ, LR, LS, LT, LU, LV, LW, LX, LY, LZ, MA, MB, MC, MD, ME, MF, MG, MH, MI, MJ, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NB, NC, ND, NE, NF, NG, NH, NI, NJ, NK, NL, NM, NN, NO, NP, NQ, NR, NS, NT, NU, NV, NW, NX, NY, NZ, OA, OB, OC, OD, OE, OF, OG, OH, OI, OJ, OK,
OL, OM, ON, OO, OP, OQ, OR, OS, OT, OU, OV, OW, OX, OY, OZ, PA, PB, PC, PD, PE, PF, PG, PH, PI, PJ, PK, PL, PM, PN, PO, PP, PQ, PR, PS, PT, PU, PV, PW, PX, PY, PZ, QA, QB, QC, QD, QE, QF, QG, QH, QI, QJ, QK, QL, QM, QN, QO, QP, QQ, QR, QS, QT, QU, QV, QW, QX, QY, QZ, RA, RB, RC, RD, RE, RF, RG, RH, RI, RJ, RK, RL, RM, RN, RO, RP, RQ, RR, RS, RT, RU, RV, RW, RX, RY, RZ, SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SP, SQ, SR, SS, ST, SU, SV, SW, SX, SY, SZ, TA, TB, TC, TD, TE, TF,
TG, TH, TI, TJ, TK, TL, TM, TN, TO, TP, TQ, TR, TS, TT, TU, TV, TW, TX, TY, TZ, UA, UB, UC, UD, UE, UF, UG, UH, UI, UJ, UK, UL, UM, UN, UO, UP, UQ, UR, US, UT, UU, UV, UW, UX, UY, UZ, VA, VB, VC, VD, VE, VF, VG, VH, VI, VJ, VK, VL, VM, VN, VO, VP, VQ, VR, VS, VT, VU, VV, VW, VX, VY, VZ, WA, WB, WC, WD, WE, WF, WG, WH, WI, WJ, WK, WL, WM, WN, WO, WP, WQ, WR, WS, WT, WU, WV, WW, WX, WY, WZ, XA, XB, XC, XD, XE, XF, XG, XH, XI, XJ, XK, XL, XM, XN, XO, XP, XQ, XR, XS, XT, XU, XV, XW, XX, XY, XZ, YA,
YB, YC, YD, YE, YF, YG, YH, YI, YJ, YK, YL, YM, YN, YO, YP, YQ, YR, YS, YT, YU, YV, YW, YX, YY, YZ, ZA, ZB, ZC, ZD, ZE, ZF, ZG, ZH, ZI, ZJ, ZK, ZL, ZM, ZN, ZO, ZP, ZQ, ZR, ZS, ZT, ZU, ZV, ZW, ZX, ZY, ZZ
1
有了这一个可以生成任何长度的序列:
SQL> with input as (
2 select 0 as start_position, 3 as strings_length, 35 as sequence_elements, ascii('Z')-ascii('A')+1 as base, ascii('A') as start_val
3 from dual
4 )
5 select sequence_position, listagg(character,'') within group(order by char_level desc) as sequence_value
6 from (
7 select inp_sequence.*, format.*, chr(start_val + mod(trunc(sequence_position/power(base, char_level)),base)) as character
8 from (
9 select i.*, start_position + rownum-1 as sequence_position
10 from input i
11 connect by rownum <= sequence_elements
12 ) inp_sequence
13 cross join (
14 select rownum-1 as char_level
15 from input
16 connect by rownum <= strings_length
17 ) format
18 )
19 group by sequence_position
20/
SEQUENCE_POSITION SEQUENCE_VALUE
----------------- --------------------------------------------------------------------------------
0 AAA
1 AAB
2 AAC
3 AAD
4 AAE
5 AAF
6 AAG
7 AAH
8 AAI
9 AAJ
10 AAK
11 AAL
12 AAM
13 AAN
14 AAO
15 AAP
16 AAQ
17 AAR
18 AAS
19 AAT
20 AAU
21 AAV
22 AAW
23 AAX
24 AAY
25 AAZ
26 ABA
27 ABB
28 ABC
29 ABD
30 ABE
31 ABF
32 ABG
33 ABH
34 ABI
35 rows selected
SQL>
这里:
- START_POSITION指示要开始(0表示AA..A)的元件
- strings_length指示序列中字符串的长度
- 个sequence_elements指示元件,以生成的数目(以下START_POSITION)
相关问题
- 1. 生成字母数字串顺序
- 2. 在ASP.net上生成顺序字母数字数字C#
- 3. 在C中按字母顺序生成文件#
- 4. 按字母顺序用a到j中的小写字母生成矢量m?
- 5. Oracle SQL:按字母顺序查找唯一组合和顺序
- 6. 顺序生成的字母数字编号
- 7. 在Java中生成字母
- 8. 如何使用原始数据顺序(不按字母顺序)生成箱图?
- 9. 在jQuery中按字母顺序排序
- 10. C中的顺序字母#
- 11. cakephp中的字母顺序
- 12. 字母顺序在循环
- 13. 字母顺序在GROUP_CONCAT
- 14. 按字母顺序排序,然后按字母顺序排列
- 15. 按字母顺序
- 16. mysql字母顺序
- 17. PHP Scandir不是按字母顺序自动生成的吗? TIA。
- 18. 在java中按字典顺序排列(按字母顺序)
- 19. 按字母顺序排序
- 20. 按字母顺序排序
- 21. 按字母顺序排序
- 22. 按字母顺序排序
- 23. 排序按字母顺序
- 24. 按字母顺序排序
- 25. 按字母顺序排序
- 26. 顺序按字母顺序职位
- 27. 生成长度为6的唯一非顺序字母数字字符串
- 28. 按顺序生成
- 29. 如何使一个字母顺序不同的字母顺序的比较器的字母顺序
- 30. 的Python:按字母顺序排序在