【问题标题】:Round Up Number Integer in SQL querySQL查询中的整数整数
【发布时间】:2021-10-30 12:04:39
【问题描述】:

我有一个像这样的存储过程的汇总查询

DECLARE @number int;

SET @number = 918750;

SELECT @number + (100 - @number % 100 )

这将返回 918800

要返回的正确值是 918,800。

但如果@number = 918800,它将变为918900。

我只希望最后一位数字四舍五入。

我可以将其更改为仅单个查询吗?

如果我使用是的

SELECT ROUND(918750 , -2) AS RoundValue;

它返回 918800,但如果我使用

SELECT ROUND(918740 , -2) AS RoundValue;

它返回 918700,而我需要的总是向上舍入,所以我需要的结果是 918000

【问题讨论】:

  • 只使用地板,选择地板(918800)
  • @TBA ,我需要总是四舍五入最后两位数。如果我输入 918740 它应该返回 918800

标签: sql math rounding


【解决方案1】:

如果您使用 Oracle、MySQL 和 PostgreSQL 中的任何一个,您可以使用 ROUND() 函数。

喜欢这个

SELECT ROUND(918750 , -2)

此查询将产生 918800 结果。 -2 表示最后两位四舍五入。

【讨论】:

  • 确实,如果我输入 SELECT ROUND(918740 , -2) 。它返回 918700,我需要它总是四舍五入,结果应该是 918800
  • 我使用了 postgresql。所以它生成了 918800。如果你使用另一个数据库,结果可能会不同。我对此并不完全确定。
【解决方案2】:

试试这个

DECLARE @number int;

SET @number = 918750;
// Solution 1
select @number -(@number % 100)+iif(@number%100!=0,100,0);

//Solution 2
select ceiling(@number/100.00)*100;

【讨论】:

  • 如果你把 SET @number = 918000;它将返回 918100。
  • 现在我已经更新了查询
  • 是的,这是解决方案之一,谢谢。
【解决方案3】:

试试这个

DECLARE @Number INT = 435667
SELECT CONVERT(INT, 100 * ROUND(@Number / 100.0, 0))

【讨论】:

    猜你喜欢
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多