如何使用sql表示正則表示式:[a-z][0-9a-z]
阿新 • • 發佈:2018-12-19
需求描述:
使用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