Oracle-создание записей с алфавитно-цифровым числом и по возрастанию символов

Я хочу иметь столбец, который содержит уникальный ключ клиента, состоящий из числа+символ в порядке возрастания.
Можно ли каким-то образом проинструктировать Oracle генерировать множество записей, от 1a до 1z, затем от 2a до 2z и т. д. до 300000z:

CUSTOMER_NUM
------------
10a

10b

10c

.

.

10z

11a

11b

.

Лучшее, что я достиг до сих пор что-то вроде этого:

select ROUND(DBMS_RANDOM.VALUE(9,21)), dbms_random.string('l', 1) from dual;

Есть идеи кто-нибудь пожалуйста? Я хотел бы создать тестовую таблицу, содержащую не менее 300000 записей.

Спасибо!

3 ответа

  1. Вам может понадобиться что-то вроде следующего:

    select alpha || num
    from 
    (select substr('qwertyuiopasdfghjklzxcvbnm', level, 1) as alpha from dual connect by level <= 26)
    cross join 
    (select level as num from dual connect by level <= 2)
    order by num, alpha
    

    Первый запрос использует строку, содержащую все символы, и разбивает ее на 26 строк, содержащих один символ.

    Второй запрос генерирует заданное количество чисел для соединения с символами.

  2. Вы можете попробовать это:

    WITH n AS 
        (SELECT LEVEL AS Num FROM dual CONNECT BY LEVEL < 10),
    c AS 
        (SELECT CHR(LEVEL + 96) AS alpha FROM dual CONNECT BY LEVEL <= 26)
    SELECT num||alpha
    FROM n 
        CROSS JOIN c;
    
  3. Ниже запрос должен дать вам желаемый результат.

    WITH
    TABLE1 AS (SELECT LEVEL PART_1   FROM DUAL CONNECT BY LEVEL <= 300000),
    TABLE2 AS (SELECT CHR(LEVEL+96) AS PART_2 FROM DUAL CONNECT BY LEVEL <27)
    SELECT PART_1||PART_2 AS KEY_ID FROM TABLE1,TABLE2