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

如何在SQL Server单表中生成指定长度的唯一字符组合并填充

在SQL Server中生成指定字符集的4位唯一组合并填充到表中

实现思路

要生成[A-Z、0-9]的4位唯一组合(无重复元素、不考虑顺序的组合),核心是先构造包含所有候选字符的数据集,再通过有序自连接避免重复组合,最后拼接字符插入目标表。

具体SQL脚本

-- 构造包含所有候选字符的数据集
WITH AllChars AS (
    -- 生成0-9数字字符
    SELECT CHAR(ASCII('0') + n) AS CharVal
    FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) AS nums(n)
    UNION ALL
    -- 生成A-Z大写字母字符
    SELECT CHAR(ASCII('A') + n) AS CharVal
    FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9),
                (10),(11),(12),(13),(14),(15),(16),(17),(18),(19),
                (20),(21),(22),(23),(24),(25)) AS letters(n)
),
-- 生成4位唯一组合(通过字符顺序递增规则避免重复)
Combinations AS (
    SELECT 
        c1.CharVal + c2.CharVal + c3.CharVal + c4.CharVal AS CodeValue
    FROM AllChars c1
    JOIN AllChars c2 ON c2.CharVal > c1.CharVal
    JOIN AllChars c3 ON c3.CharVal > c2.CharVal
    JOIN AllChars c4 ON c4.CharVal > c3.CharVal
)
-- 将组合批量插入到Code表
INSERT INTO Code (Code)
SELECT CodeValue FROM Combinations;

脚本说明

  • AllChars CTE:通过CHAR()和ASCII()函数生成0-9、A-Z的完整字符集,确保覆盖需求中的所有候选字符。
  • Combinations CTE:四次自连接时,强制后续字符的字典序大于前一个,这样能保证生成的组合唯一(比如只会出现123A,不会生成A123或132A这类重复组合)。
  • 插入操作:直接将生成的所有合法组合批量写入你的Code表。

验证结果

执行脚本后,可通过以下语句查看结果:

SELECT * FROM Code ORDER BY Code;

返回的结果会和你C#示例中的格式一致,为有序的唯一组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:15:33