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

本文介绍了一种使用SQL生成符合特定正则表达式的两字符序列的方法。该序列的首位为a-z,第二位为0-9或a-z,通过精心设计的WITH语句实现。文章详细展示了生成算法,包括x1和x2子查询的创建,以及最终选择b.cc作为trail_id的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求描述:

使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值