如何使用sql表示正则表达式:[a-z][0-9a-z]

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/huryer/article/details/84100460
今日推荐