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

T-SQL将数字拼接为10位带前导零字符串的实现方案

T-SQL固定10位前导零补全最优方案

方案1:全版本兼容高效实现

兼容性最好,性能优于FORMAT函数,适配所有SQL Server版本,同时和你原有逻辑一致,超过10位返回NULL:

SELECT 
    CASE 
        WHEN LEN(CAST(CODBADGE AS VARCHAR(10))) > 10 THEN NULL
        ELSE RIGHT('0000000000' + CAST(CODBADGE AS VARCHAR(10)), 10) 
    END AS code10
FROM TAB_BADGE

如果CODBADGE本身就是字符串类型,可以省略CAST转换:

SELECT 
    CASE 
        WHEN LEN(CODBADGE) > 10 THEN NULL
        ELSE RIGHT('0000000000' + CODBADGE, 10) 
    END AS code10
FROM TAB_BADGE

实现逻辑

  • 先拼接10个零和原CODBADGE字符串
  • 从右侧截取10位,自动补全前导零
  • 长度校验保证超过10位时返回NULL,和你原有CASE逻辑完全一致

方案2:SQL Server 2012+ 极简写法

如果你的数据库版本是SQL Server 2012及以上,可以用FORMAT函数实现更简洁的写法:

SELECT FORMAT(CAST(CODBADGE AS BIGINT), 'D10') AS code10
FROM TAB_BADGE

如果需要保留超过10位返回NULL的逻辑,调整为:

SELECT 
    CASE 
        WHEN LEN(CAST(CODBADGE AS VARCHAR(10))) >10 THEN NULL
        ELSE FORMAT(CAST(CODBADGE AS BIGINT), 'D10') 
    END AS code10
FROM TAB_BADGE

说明

D10是数值格式化说明符,代表将数字格式化为10位十进制字符串,不足位自动补前导零。该写法代码更简洁,但FORMAT属于CLR调用函数,数据量大时性能低于方案1的RIGHT拼接实现。

验证结果

两种方案对你提供的测试值都能输出完全符合预期的10位前导零补全结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:36:03