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

SSMS中SQL SELECT语句返回0而非预期50的运算问题

问题原因

  • 该问题由SQL Server的整数除法自动截断特性导致:当除法运算的两个操作数均为整数类型时,SQL Server会自动截断计算结果的小数部分,仅保留整数位。
  • 你给出的语句计算过程如下:
    1. 首先计算1500-1000,得到整数结果500
    2. 执行500/1000运算:两个操作数均为整数,整数除法会直接截断小数部分,得到结果0而非预期的0.5
    3. 最后执行0*100,最终返回结果为0

修复方案

只需调整运算逻辑,触发浮点除法即可得到预期的50,可参考以下几种常用写法:

  • 给除数/被除数增加小数位,隐式转为浮点类型运算
    select ((1500-1000)/1000.0)*100
    
  • 显式转换其中一个操作数为小数类型
    select ((1500-1000)/CONVERT(DECIMAL(10,2), 1000))*100
    
  • 调整运算顺序,先乘后除规避小数截断
    select ((1500-1000)*100)/1000
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:30:04