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

T-SQL:将固定长度带前导零的CHAR转INT时保留前导零的方法

解决带前导零的CHAR转INT后保留格式的问题

嗨,这里得先给你划个重点:INT类型本身是不存储前导零的——它只记录数值本身,所以不管你转之前是'00010'还是'10',转成INT后本质都是数值10,前导零会被自动丢弃,这是数据类型的特性决定的。

不过既然你输入数据长度始终是5位,想要得到显示为'00010'的结果,其实不用硬转成INT再折腾,而是可以转成数值后再格式化回固定长度的字符串,或者直接处理字符串。下面给你几个主流数据库的可行方案:

  • SQL Server:
    可以用FORMAT函数直接指定格式,或者用RIGHT补零:

    -- 方法1:FORMAT函数
    SELECT FORMAT(CAST('00010' AS INT), 'D5');
    
    -- 方法2:RIGHT补零
    SELECT RIGHT('00000' + CAST('00010' AS INT), 5);
    
  • MySQL:
    用LPAD函数补前导零到指定长度:

    SELECT LPAD(CAST('00010' AS UNSIGNED), 5, '0');
    
  • PostgreSQL:
    可以用TO_CHAR格式化,或者LPAD补零:

    -- 方法1:TO_CHAR格式化
    SELECT TO_CHAR(CAST('00010' AS INTEGER), 'FM00000');
    
    -- 方法2:LPAD补零
    SELECT LPAD(CAST('00010' AS INTEGER)::TEXT, 5, '0');
    

如果你的需求是存储带前导零的数值,那建议继续使用CHAR/VARCHAR类型,因为INT类型从设计上就不支持保留前导零的存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:20:30