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

为何SQL Server T-SQL中SELECT 1/5结果为0而非0.2?

T-SQL中SELECT 1/5返回0而非0.2的原因说明

该现象的核心由SQL Server Transact-SQL的两类运算规则决定:数据类型优先级规则、整数除法截断规则,具体两种场景的运算逻辑如下:

  • SELECT 1/5返回0的原因
    语句中的1和5都属于默认int整数类型,当两个操作数都为整数时,T-SQL默认执行整数除法,运算过程会直接舍弃小数部分,仅保留整数位结果。1除以5的实际值为0.2,截断小数后最终返回结果为0。
  • SELECT 1.0/5返回0.200000的原因
    语句中的1.0属于decimal精确数值类型,其数据类型优先级高于int。执行运算前,T-SQL会先自动将低优先级的操作数5隐式转换为decimal类型,再执行非截断的精确数值除法,最终返回带小数位的运算结果。末尾的多余零位由decimal类型的精度、标度自动推导规则决定,属于正常的类型输出格式。

拓展说明:如果需要对两个整数做带小数的除法运算,可主动将其中一个操作数显式转换为非整数类型即可,示例写法:SELECT CONVERT(DECIMAL(10,2),1)/5。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:06:05