我正要通过questionSQL给人Erroreneous结果
于是,我就计算它自己和检查结果.. 但总是结果我得到的是一个圆形的值。为什么?
其实我应该得到0.1428 ......
@Everyone谁回答:谢谢大家,按照SO规则我能接受的答案只有一个,所以接受最早的那个人。
我正要通过questionSQL给人Erroreneous结果
于是,我就计算它自己和检查结果.. 但总是结果我得到的是一个圆形的值。为什么?
其实我应该得到0.1428 ......
@Everyone谁回答:谢谢大家,按照SO规则我能接受的答案只有一个,所以接受最早的那个人。
尝试
select 2.0/14
如果您使用整数结果将是整过。整数并不浮点数
整数除法2/14
的结果始终为0
尝试2.0/14.0
代替。
你在做integer division。
至少有一个操作数需要是浮点/小数才能使整个表达式评估为其中一种类型。
试试这个:
declare @a float
set @a = 2.0/14.0
select [email protected]
当然,这是唯一的*隐含位*所有的答案是, ,当SQL Server正在评估一个操作时,它只考虑该操作涉及的数据类型。它不会评估将接收计算结果的变量/列的类型。 (这似乎部分是你期望的) – 2012-04-19 12:28:20
@Damien_The_Unbeliever:显式语句 - “该操作中涉及的数据类型”和“它不评估将接收该计算结果的变量/列的类型“。更有意义!谢谢 – Marshal 2012-04-19 12:31:27