You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL中如何将数值取整至0.05的倍数?

Oracle SQL实现指定数值调整逻辑

首先,咱们先明确你要的规则:将数值向上舍入到最接近的0.05的倍数,如果数值本身已经是0.05的整数倍(比如2.10、2.50),则保持不变。你的几个测试例子完全贴合这个规则:

  • 2.39 → 向上取到最近的0.05倍数是2.40
  • 4.66 → 向上取到最近的0.05倍数是4.70
  • 2.11 → 向上取到最近的0.05倍数是2.15
  • 2.10、2.50本身就是0.05的倍数,所以保持原样

在Oracle SQL里,用CEIL()函数就能轻松实现这个逻辑,具体思路很简单:

  1. 把目标数值乘以20(因为0.05 = 1/20,乘以20后就能把0.05的倍数转化为整数)
  2. 用CEIL()对结果向上取整(不管小数部分是多少,都直接进一位到下一个整数)
  3. 再把结果除以20,还原回原数值的量级

具体SQL代码

假设你的数值列名为original_num,表名为your_table,可以这样写:

SELECT 
    original_num,
    CEIL(original_num * 20) / 20 AS adjusted_num
FROM your_table;

验证你的测试用例

咱们用你给出的数值跑一遍,结果完全符合预期:

  • CEIL(2.39 * 20) / 20 = CEIL(47.8) /20 = 48/20 = 2.40
  • CEIL(4.66 *20)/20 = CEIL(93.2)/20 =94/20=4.70
  • CEIL(2.11*20)/20=CEIL(42.2)/20=43/20=2.15
  • CEIL(2.10*20)/20=CEIL(42)/20=42/20=2.10
  • CEIL(2.50*20)/20=CEIL(50)/20=50/20=2.50

额外优化:强制显示两位小数

如果需要确保结果始终显示为两位小数(比如避免出现2.4,而是强制显示2.40),可以用TO_CHAR()做格式化:

SELECT 
    original_num,
    TO_CHAR(CEIL(original_num * 20) / 20, 'FM9999999.99') AS adjusted_num_formatted
FROM your_table;

这里的FM修饰符是用来去掉数值前多余的空格,让输出更整洁。

内容的提问来源于stack exchange,提问作者legendefs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:24:24