是否可以在 SQL 中将小于 1 的数字四舍五入,同时保持十进制形式

Is It Possible to Round a Number Smaller Than 1 In SQL While Keeping In Decimal Form

尽管专门寻找这个问题,但我没有找到解决方案。

下面的查询是我试图让最后的小数位正确显示。

select CAST(CAST(33 as float)/100 as decimal(5,3))

从这里我正在寻找如何正确舍入到 .33 或者如果结果是 .339 舍入到 .34

我发现它只会向下舍入为 0,因为它不是整数。

谁能给我指出正确的方向,或者如果没有好的方法让我知道。

你可以试试这个:

MySQL:

select ROUND(339/1000,2)
0.34

select ROUND(33/100,2)
0.33

SQL 服务器:

select ROUND(339/1000.0,2)
0.340000

select ROUND(33/100.0,2)
0.330000

确保您的分母未被视为整数。您可以添加 .0CASTCONVERT。如果您希望进行四舍五入:

SELECT 331 / 1000.0;
-- gives 0.331000

SELECT ROUND(331 / 1000.0, 2);
-- gives 0.330000

SELECT CAST(ROUND(331 / 1000.0, 2) AS DECIMAL(5, 2));
-- gives 0.33

在您期望发生四舍五入的情况下:

SELECT 339 / 1000.0;
-- gives 0.339000

SELECT ROUND(339 / 1000.0, 2);
-- gives 0.340000

SELECT CAST(ROUND(339 / 1000.0, 2) AS DECIMAL(5, 2));
-- gives 0.34

注意:您可能不需要同时执行 ROUNDCAST,因为我相信四舍五入是隐式发生的,但如果您选择这样写,它的意图会更加清晰。