带舍入的sql错误

时间:2015-10-16 15:56:35

标签: sql sql-server sql-server-2008 rounding

我对SQL有一个非常奇怪的问题。我有一个22号的单元格,当我想绕它时,结果是不正确的。

如果我尝试使用数字而不是单元格,则代码效果很好。

select Mora2, round(Mora2/30,0)*30, mora2+1, 
round((mora2+1)/30,0)*30, round(convert(float,mora2)/30,0)*30
from Trimestre 

结果是

Mora2   (No column name)    (No column name)    (No column name)    (No column name)

 22         30                  23                  30                  30

如果我尝试使用该号码,则代码效果很好。

 select round(22/30,0)*30 as Mora2

 Mora2
 0

为什么可能呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

只要您使用它来删除小数部分并确保整数除法,您就可以CAST(Mora2 AS INT)

当分子或分母不是整数时,除法的结果将具有小数位。所以22.0/30 = 0.73333322/30 = 0