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:按字母順序排序在