You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

T-SQL中实现类Array功能生成规则有序不重复AlphaSeq序列的方法

实现方案

规则梳理

根据你给出的示例,序列的生成优先级为:

  • 第一梯队:1位纯大写字母(A→B→C...)
  • 第二梯队:1位大写字母+数字1(A1→B1→C1...)
  • 第三梯队:2位纯大写字母,按第一位优先、第二位次之的顺序排列(AA→AB→AC...→BA→BB→BC...)

如果需要调整数字位支持0-9,或者增加小写字母、更多字符长度,可以自行修改字符集定义部分。

完整实现代码

CREATE TABLE #Index 
(
     AlphaSeq VARCHAR(2), 
     NumericSeq TINYINT IDENTITY(1,1) -- 直接用自增列生成数字序列,不用手动维护
)

DECLARE @Chars VARCHAR(26) = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' -- 定义允许使用的字母集合
DECLARE @i INT = 1, @j INT = 1
DECLARE @TotalLen INT = LEN(@Chars)

-- 插入第一梯队:1位纯字母
WHILE @i <= @TotalLen
BEGIN
    INSERT INTO #Index (AlphaSeq) VALUES (SUBSTRING(@Chars, @i, 1))
    SET @i = @i + 1
END

-- 插入第二梯队:1位字母+1,需要支持更多数字的可以把下面的'1'改成遍历0-9即可
SET @i = 1
WHILE @i <= @TotalLen
BEGIN
    INSERT INTO #Index (AlphaSeq) VALUES (CONCAT(SUBSTRING(@Chars, @i, 1), '1'))
    SET @i = @i + 1
END

-- 插入第三梯队:2位纯字母
SET @i = 1
WHILE @i <= @TotalLen
BEGIN
    SET @j = 1
    WHILE @j <= @TotalLen
    BEGIN
        INSERT INTO #Index (AlphaSeq) VALUES (CONCAT(SUBSTRING(@Chars, @i, 1), SUBSTRING(@Chars, @j, 1)))
        SET @j = @j + 1
    END
    SET @i = @i + 1
END

-- 取前100条符合要求的结果,你可以根据需要调整数量
SELECT TOP 100 * FROM #Index

代码说明

  • 直接用自增列NumericSeq自动维护数字序列,不需要手动写变量计数,避免出错
  • 字符集@Chars可以自行修改,比如要包含数字、小写字母直接往字符串里加就行
  • 如果你不需要某一梯队的序列,直接删掉对应插入块的代码即可
  • 最终查询可以用TOP控制返回的行数,匹配你原来要生成100条的需求

内容的提问来源于stack exchange,提问作者IdiotGuy8907

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:57:02