Oracle - 生成具有字母数字和字符升序的记录
Oracle - generate records with alphanumeric number and character ascending
我想要一个包含客户唯一键的列,由数字+字符按升序排列。
是否有可能以某种方式指示 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 条记录的测试 table。
谢谢!
您可能需要以下内容:
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 行。
第二个查询生成给定数量的数字以与字符连接。
你可以试试这个:
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;
下面的查询应该会给你想要的结果。
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
我想要一个包含客户唯一键的列,由数字+字符按升序排列。 是否有可能以某种方式指示 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 条记录的测试 table。
谢谢!
您可能需要以下内容:
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 行。
第二个查询生成给定数量的数字以与字符连接。
你可以试试这个:
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;
下面的查询应该会给你想要的结果。
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