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

3 formas de formatear un número a 2 lugares decimales en Oracle

Al usar Oracle Database, puede usar funciones como TO_CHAR(number) para devolver números como una cadena, formateada con dos decimales (o la cantidad de decimales que necesite).

O puede usar funciones como ROUND(number) y TRUNC(number) para redondear o truncar el número al número requerido de lugares decimales.

El TO_CHAR() Función

Aquí hay un ejemplo que usa el TO_CHAR(number) función:

SELECT TO_CHAR(1.2345, 'fm99D00')
FROM DUAL;

Resultado:

1.23

En este caso, el número original tiene más de dos lugares decimales, por lo que el resultado simplemente lo trunca al número especificado de ceros que siguen al carácter decimal/base (D ) en el modelo de formato.

La razón por la que usé ceros después del carácter decimal es para proporcionar ceros finales si es necesario.

Ejemplo:

SELECT TO_CHAR(7, 'fm99D00')
FROM DUAL;

Resultado:

7.00

Si no quiero los ceros finales, puedo cambiar el 0 caracteres a 9 s.

Aquí hay una comparación de los dos:

SELECT 
    TO_CHAR(7, 'fm99D00') AS "r1",
    TO_CHAR(7, 'fm99D99') AS "r2"
FROM DUAL;

Resultado:

     r1    r2 
_______ _____ 
7.00    7.   

Usando 9 s en este caso, resultó en un carácter base, pero sin lugares decimales.

Debo señalar que fm es un modificador de formato que elimina cualquier relleno que pueda aplicarse al resultado. Puede omitir esto si no le importa que el resultado se rellene. Aunque, si hace esto, podría terminar con ceros al final, incluso cuando use el 9 elemento de formato.

Esto es lo que sucede cuando elimino el fm del ejemplo anterior:

SELECT 
    TO_CHAR(7, '99D00') AS "r1",
    TO_CHAR(7, '99D99') AS "r2"
FROM DUAL;

Resultado:

       r1        r2 
_________ _________ 
  7.00      7.00   

Por supuesto, no solo está limitado a dos lugares decimales:puede especificar más lugares decimales en su modelo de formato si es necesario.

Ejemplo:

SELECT TO_CHAR(7, 'fm99D0000')
FROM DUAL;

Resultado:

7.0000

El ROUND() Función

Aquí hay un ejemplo que usa el ROUND(number) función:

SELECT ROUND(1.2573, 2)
FROM DUAL;

Resultado:

1.26

Tél ROUND() función redondea un número a un lugar decimal dado. Aquí, especificamos dos lugares decimales, pero podríamos haber especificado cualquier número.

En este caso, el número se redondeó hacia arriba.

El TRUNC() Función

Aquí hay un ejemplo que usa el TRUNC(number) función:

SELECT TRUNC(1.2573, 2)
FROM DUAL;

Resultado:

1.25

El TRUNC() función trunca un número a un lugar decimal dado. No se produce redondeo.