Oracle中修改的ROUND UP功能

Ani*_*h D 2 sql oracle oracle10g oracle11g

我有,我想圆特殊要求以下方式号码-

   1.14 to 1.5
    1.6 to 2
    0.8 to 1
    7.5 to 7.5
Run Code Online (Sandbox Code Playgroud)

也就是说,最接近0.5的倍数.

有没有办法实现这个目标?

最好的祝福

MT0*_*MT0 8

如果要舍入到最接近的0.5:

测试数据:

CREATE TABLE your_table ( value ) AS
  SELECT 1.14 FROM DUAL UNION ALL
  SELECT 1.6  FROM DUAL UNION ALL
  SELECT 0.8  FROM DUAL UNION ALL
  SELECT 7.5  FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT value,
       CEIL( value * 2 ) / 2 AS rounded_value
FROM   your_table
Run Code Online (Sandbox Code Playgroud)

输出:

VALUE ROUNDED_VALUE
----- -------------
 1.14           1.5
  1.6             2
  0.8             1
  7.5           7.5
Run Code Online (Sandbox Code Playgroud)

如果你想从零舍入到最接近的0.5(负数不一样),你可以使用:

SIGN(value) * CEIL(ABS(value)*2) / 2
Run Code Online (Sandbox Code Playgroud)