【问题标题】:how to round off to next 10 in oracle?如何在oracle中四舍五入到下一个10?
【发布时间】:2013-07-21 07:22:38
【问题描述】:

我需要在查询中找到下一个 10 位数字。

我尝试使用 round(n,-1) 但它会四舍五入到最接近的 10 位,但我需要下一个 10 位。

请帮帮我。

select round(5834.6,-1) from dual

给 5830 但我需要 5840

【问题讨论】:

  • 数字加 10 并四舍五入。

标签: sql plsql oracle11g


【解决方案1】:

然后加上“5”:

select round(5834.6 + 5,-1) from dual

【讨论】:

  • 这就是我的想法,但docs.oracle.com/cd/B19306_01/server.102/b14200/functions135.htm 似乎暗示ROUND 使用的舍入取决于数据类型... 4.999 然后用于其他数据类型?
  • @fvu 。 . .数据类型依赖性仅在该值介于该值之间或距该值低一位时才有效。无论如何,Sebas 解决方案应该能满足您的需求。
【解决方案2】:
select ceil(5834.6/10)*10 from dual

【讨论】:

    【解决方案3】:

    通用解决方案 - 使用 MOD 找到最后 10 位,然后将结果加 10。

    select (5834.6 - MOD(5834.6,10)) + 10 from dual;
    

    如果您需要下一个第 8 位,只需将任何“10”替换为“8”即可。

    【讨论】:

      【解决方案4】:

      Select ceil(5834.6/10)*10 from dual;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 1970-01-01
        相关资源
        最近更新 更多