sql >> Base de Datos >  >> RDS >> Oracle

Oracle SQL - Ronda - Mitad

La documentación le muestra el algoritmo utilizado :

Por lo tanto, podría modificar la versión positiva distinta de cero:

FLOOR(n * POWER(10, integer) + 0.4) * POWER(10, -integer)
                                 ^

p.ej. para un redondeo fijo e ignorando ceros/negativos por ahora:

with t (my_number) as (
  select 3.674 from dual
  union all select 3.675 from dual
  union all select 3.676 from dual
)
select my_number,
  floor(my_number * power(10, 2) + 0.4) * power(10, -2) as round_on_number
from  t;

 MY_NUMBER ROUND_ON_NUMBER
---------- ---------------
     3.674            3.67
     3.675            3.67
     3.676            3.68

Podría incluir cero/negativo a través de una expresión de caso; o escribe tu propia función para manejarla más ordenadamente.