如何通过除以两个整数值得到浮点数结果?

我想指定在两个整数之间进行除法的小数位数,例如:

select 1/3 

目前返回0 。 我希望它返回0,33

就像是:

 select round(1/3, -2) 

但是这不起作用。 我怎样才能达到预期的效果?

如果你正在寻找一个常数,stb和xiowl的build议是好的。 如果您需要使用现有的字段或整数参数,则可以先将它们转换为浮点数:

 SELECT CAST(1 AS float) / CAST(3 AS float) 

要么

 SELECT CAST(MyIntField1 AS float) / CAST(MyIntField2 AS float) 

由于SQL Server执行整数除法。 尝试这个:

 select 1 * 1.0 / 3 

当你将整数作为parameter passing时,这是有帮助的。

 select x * 1.0 / y 

这两个都没有必要。 分区的结果数据types总是具有较高数据types优先级的数据types 。 因此解决scheme必须是:

 SELECT CAST(1 AS float) / 3 

要么

 SELECT 1 / CAST(3 AS float) 

使用

 select 1/3.0 

这将完成这项工作。

可能会有点晚,但是要意识到CAST ing在MySQL中是不允许的,并且当你试图在MySQL dev中声明CAST(1 AS float)时会引发一个错误。

这个解决方法在MySQL中是一个简单的方法。 做就是了

 (1 + 0.0) 

然后使用ROUND来达到这样的特定小数位数:

 ROUND((1+0.0)/(2+0.0), 3) 

上面的SQL除以1和2,并返回一个浮点数到3位小数,因为它将是0.500

看起来这个技巧在SQL Server中工作,并且更短(基于以前的答案)

 SELECT 1.0*MyInt1/MyInt2 

要么:

 SELECT (1.0*MyInt1)/MyInt2 

用这个

select cast((1*1.00)/3 AS DECIMAL(16,2)) as Result

这里在这个sql中首先转换为float或乘以1.00。这个输出将是一个浮点数。在这里我考虑2个小数位。 你可以select你所需要的。

如果你来到这里(就像我一样)find整数值的解决scheme,这里是答案:

 CAST(9/2 AS UNSIGNED) 

返回5