版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huryer/article/details/84100460
需求描述:
使用sql生成2位字符,遵循正则表达式:[a-z][0-9a-z]
正则表达式含义:
第1位:从a-z顺序进行编码;
第2位:从0-9,a-z进行编码;
-- 生成算法
WITH x1 (id
, cc) AS
(SELECT 0 AS id
, CHAR (ascii ('a')) AS cc UNION ALL
SELECT id + 1 AS id
, CHAR (ascii ('a') + id + 1) AS cc
FROM x1
WHERE id < 25)
, x2 (id
, cc) AS
(SELECT 0 AS id
, CHAR (ascii ('0')) AS cc UNION ALL
SELECT id + 1 AS id
, CASE WHEN id < 9 THEN CHAR (ascii ('1') + id) ELSE CHAR (ascii ('a') + id - 9) END AS cc
FROM x2
WHERE id < 35)
SELECT b.cc AS trail_id
FROM (SELECT a.cc
, row_number () OVER (ORDER BY a.cc) AS id
FROM (SELECT x1.cc + x2.cc AS cc
FROM x1
, x2) a
WHERE a.cc > '00') b
-- WHERE b.id = 1