Sql从int转换为float

时间:2013-07-14 15:07:09

标签: sql

declare @alpha float
declare @tmp int

set @tmp = 6
set @alpha = 1/@tmp

select @alpha 
        >> Here @alpha is echoed as 0

declare @tmp1 float

set @tmp1 = 6
set @alpha = 1/@tmp1

select @alpha 
      >> Here @alpha is echoed as 0.1666666

如果它至少发出一个警告,但是编译器也没有发出任何警告,我会很好。或者是否有这种类型的强制转换操作的编译器设置,以自动将其转换为所需的强制转换。

我的意思是将int转换为float并不难,反之亦然是我的理由。另一个逻辑问题是,如果它不允许日期变量为varchar变量,为什么它允许intfloat并最终给出不希望的结果。

1 个答案:

答案 0 :(得分:0)

也许这个link会很有用,也许你应该在divison之后使用强制转换或转换函数,或者在某些运算符中使用float值(取决于你需要做什么),因为:

返回具有更高优先级的参数的数据类型。有关更多信息,请参阅Data Type Precedence (Transact-SQL)。 如果整数被除数除以整数除数,则结果是一个整数,其截断结果的任何小数部分

Here一些例子。