如何通过除以两个整数值得到浮点数结果?
我想指定在两个整数之间进行除法的小数位数,例如:
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