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

SQL Server 2005中整数除法小数位数是否有全局设置?

关于SQL Server 2005整数除法与小数位数的问题

嘿,我来帮你理清楚这个问题~首先得先明白为什么你执行的那些查询会得到这样的结果:在SQL Server里,两个整数之间的除法默认是整数除法,它会直接截断小数部分只保留整数,所以5/13得到0,哪怕之后把这个0转成real或者decimal,结果依然是0——因为原始计算结果已经是整数0了,转换类型不会改变这个值。

回到你的核心问题:不存在全局设置能让整数除法直接返回指定小数位数的结果。这是SQL Server的既定规则,整数运算的结果类型默认就是整数,没办法通过全局配置修改这个行为。

不过要得到0.38这种两位小数的结果,有几种靠谱的做法:

  • 先将其中一个操作数转换为小数类型,再执行除法,最后按需保留两位小数:

    -- 先转其中一个数为带小数的类型,再除法后转两位小数
    SELECT CAST(CAST(5 AS DECIMAL(10,2)) / 13 AS DECIMAL(10,2));
    -- 或者直接用带小数的字面量
    SELECT CAST(5.0 / 13 AS DECIMAL(10,2));
    
  • 用ROUND函数直接对精确除法结果取两位小数:

    SELECT ROUND(CAST(5 AS DECIMAL)/CAST(13 AS DECIMAL), 2);
    

这些方法都能让你得到想要的0.38结果,核心思路就是避免直接用两个整数做除法,先把至少一个数转换成小数类型,让SQL Server执行浮点/小数除法而非整数除法,再对结果做小数位数的控制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:30:59