计算公式时出现sql问题

时间:2012-12-06 14:43:57

标签: sql sql-server database sql-server-2008 tsql

当我试图在视图中计算结果小于1的公式时,我遇到了问题。 例如我有下一个公式:Arenda*TotalArea/10000 as TotalArenda 如果我有Arenda = 10和TotalArea = 10,我通常应该得到TotalArenda = 0,00 感谢

2 个答案:

答案 0 :(得分:2)

Make Arenda = 10.0和TotalArea = 10.0而不是10和10.这将强制SQL不使用整数数学,您将获得所需的准确性。

事实上,我得到0.0的唯一方法是,如果Arenda是10(整数),而TotalArea或10000中的至少一个包含十进制和尾随0,并且只有当我覆盖操作的顺序时使用诸如

之类的括号进行分组
select 10.0* (10/10000) as blah

如果所有都是整数,则得到0.如果所有都包含小数,则得到0.01。如果我删除括号,如果它们中的任何一个是非整数类型,我会得到0.01。

如果精度非常重要,我会建议你转换为小数而不是浮点数:

select CONVERT(decimal(10,2), Arenda) * CONVERT(decimal(10,2), TotalArea) / 10000.0

答案 1 :(得分:2)

您正在使用列,因此更改类型可能不可行。 SQL Server对整数执行整数除法(其他数据库的行为不同)。尝试其中之一:

cast(Arenda as float)*cast(TotalArea as float)/10000

或:

Arenda*TotalArea/10000.0