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

MS T-SQL如何将号码范围转换为单个号码列表

MS SQL 号码范围展开CTE实现方案

完全可以通过递归CTE实现需求,不需要创建临时表,代码如下:

-- 假设你的范围表名为 NumberRanges,字段为 [Range Start]、[Range End]
WITH RecursiveNumGen AS (
    -- 锚点:取每个号码范围的起始值
    SELECT
        CAST([Range Start] AS BIGINT) AS current_num,
        CAST([Range End] AS BIGINT) AS end_num
    FROM NumberRanges

    UNION ALL

    -- 递归:每次加1,直到抵达范围结束值
    SELECT current_num + 1, end_num
    FROM RecursiveNumGen
    WHERE current_num < end_num
)
-- 输出结果,转回字符串并补前导零保证格式和原始一致
SELECT RIGHT('00000000000' + CAST(current_num AS VARCHAR(11)), 11) AS Result
FROM RecursiveNumGen
ORDER BY Result
-- 取消递归深度限制,适配长跨度的号码范围
OPTION (MAXRECURSION 0);

注意事项

  • 如果你的号码长度不是11位,可自行调整RIGHT函数中前导零的数量和VARCHAR的长度参数
  • 若所有号码范围的跨度都不超过100,可将MAXRECURSION的值设为对应最大跨度,不需要直接设为0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:45:07