【发布时间】:2013-07-21 07:22:38
【问题描述】:
我需要在查询中找到下一个 10 位数字。
我尝试使用 round(n,-1) 但它会四舍五入到最接近的 10 位,但我需要下一个 10 位。
请帮帮我。
select round(5834.6,-1) from dual
给 5830 但我需要 5840
【问题讨论】:
-
数字加 10 并四舍五入。
我需要在查询中找到下一个 10 位数字。
我尝试使用 round(n,-1) 但它会四舍五入到最接近的 10 位,但我需要下一个 10 位。
请帮帮我。
select round(5834.6,-1) from dual
给 5830 但我需要 5840
【问题讨论】:
然后加上“5”:
select round(5834.6 + 5,-1) from dual
【讨论】:
ROUND 使用的舍入取决于数据类型... 4.999 然后用于其他数据类型?
select ceil(5834.6/10)*10 from dual
【讨论】:
通用解决方案 - 使用 MOD 找到最后 10 位,然后将结果加 10。
select (5834.6 - MOD(5834.6,10)) + 10 from dual;
如果您需要下一个第 8 位,只需将任何“10”替换为“8”即可。
【讨论】:
Select ceil(5834.6/10)*10 from dual;
【讨论】: