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

SQL Server中Decimal存储整数自动追加.0如何禁用

回答

首先明确:SQL Server没有任何配置项可以修改decimal类型固定保留指定位数小数的默认行为。
你把字段定义为decimal(16,1)的时候,就相当于明确告知数据库这个字段的所有值都要保留1位小数,整数123存入后必然以123.0的形式存储、返回,这是定长精度数值类型的固有设计,不存在可以关闭该特性的开关或参数。

你遇到的问题本质是字段类型选型错误,不是数据库配置问题。SalesNo属于业务标识符,不是需要参与数值计算的度量值,从最开始就不适合用数值类型存储。
最一劳永逸、完全不需要编写额外兼容适配代码的方案,是将该字段类型调整为varchar类型,长度可根据自身业务单号的最大长度设置,通常varchar(20)就完全能覆盖需求:

  • 原有整数格式的单号(如123)存入后会原样保存为123,绝对不会自动追加.0后缀
  • 拆分交易场景的123.1、123.2这类格式单号也可以正常存储,完全满足业务要求
  • 只要存入的单号内容都是数字格式,排序、等值比对逻辑和之前使用int/decimal类型时完全一致,123 < 123.1 < 123.2 < 124的顺序不会错乱,不会出现普通字符串排序常见的100 < 2这类顺序错误——毕竟你的单号是逐位递增的数字序列,不存在长度不一致的前缀比对问题。

不要尝试继续在decimal类型上找变通方案,只要字段还是decimal(16,1)定义,就永远无法规避固定1位小数的返回规则,不想写兼容代码就只能从字段类型层面调整。另外也不要使用float/real这类浮点类型存储单号,浮点值存在固有精度丢失问题,会引发单号匹配失败的严重生产问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:57:33