SQL:CAST AS DECIMAL不接受精度参数

问题描述 投票:0回答:2

我正在使用CAST AS DECIMAL并指定所需的精度。这是我的SQL查询的代码段:

CAST(((num/volume)*100) AS decimal(16,8)) AS impact

无论我在十进制参数中输入什么,影响列中的值始终为'0.00'。

情况并非如此,因为我的数字= 5,体积= 81000,所以应该给我带来“ 0.0061”的影响。

[有人可以解释为什么CAST AS DECIMAL不接受我的参数以达到影响列中我要求的精度吗?

sql
2个回答
0
投票
因为int / int结果转换为int,这就是为什么5/81000等于0

您可以使用

(CAST(num AS decimal(16,8)) / CAST(volume AS decimal(16,8))) * 100 AS impact


0
投票
这可能是因为您的num和volume两个参数是整数。将其中一个说成小数,您应该得到想要的答案。例如

select CAST(((cast(num as decimal(5,2))/volume)*100) AS decimal(16,8)) AS impact

© www.soinside.com 2019 - 2024. All rights reserved.