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

4 formas de dar formato a un número sin decimales en Oracle

Al usar Oracle Database, puede usar funciones como TO_CHAR(number) para devolver números como una cadena. Esto le permite formatear el número para que tenga un número específico de lugares decimales, incluso sin lugares decimales, si eso es lo que desea.

También puede usar funciones como ROUND(number) y TRUNC(number) para redondear o truncar el número sin decimales.

También está el CAST() función que le permite convertir un tipo de datos como un número entero, lo que elimina efectivamente cualquier lugar decimal.

El TO_CHAR() Función

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

SELECT TO_CHAR(1234.56, 'fm99G999')
FROM DUAL;

Resultado:

1,235

En este caso mi modelo de formato consta de:

  • una fm , que es un modificador de formato que elimina cualquier carácter de relleno inicial o final que pueda agregarse al resultado.
  • múltiples 9 caracteres, que representan cada dígito
  • una G carácter, que representa un separador de grupo consciente de la configuración regional

Lo importante a tener en cuenta es que no usa la D elemento de formato, que es el carácter decimal consciente del formato. Tampoco utiliza caracteres decimales literales (como una coma o un punto). Y debido a que no tiene caracteres decimales, obviamente no hay dígitos que sigan a dicho carácter.

Si hicimos tener un carácter decimal, cualquier 9 o 0 los elementos a la derecha podrían dar lugar a que se incluyan decimales en el resultado.

Ejemplo:

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

Resultado:

7.00

Para suprimir los ceros finales, podemos cambiar el 0 caracteres a 9 s. Sin embargo, eliminar el fm El modificador puede hacer que aparezcan ceros finales incluso cuando se usa el 9 elemento de formato.

Aquí hay una comparación para ilustrar lo que quiero decir:

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

Resultado:

     r1    r2        r3 
_______ _____ _________ 
7.00    7.      7.00   

El ROUND() Función

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

SELECT ROUND(1234.56, 0)
FROM DUAL;

Resultado:

1,235

El ROUND() función redondea un número a un lugar decimal dado. Aquí, especificamos cero lugares decimales, lo que elimina todos los lugares decimales del 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(1234.56, 0)
FROM DUAL;

Resultado:

1234

El TRUNC() función trunca un número a un lugar decimal dado. No se produce redondeo. Por lo tanto, este número se truncó a cero decimales, sin redondeo.

El CAST() Función

Aquí hay un ejemplo que usa CAST() función:

SELECT CAST(1234.56 AS INT) 
FROM DUAL;

Resultado:

1,235

El CAST() La función convierte su argumento a un tipo de datos diferente. En este caso convertimos el número a un entero. Los números enteros no tienen lugares decimales, por lo que todas las partes fraccionarias se eliminan del resultado (incluido el carácter decimal). Tenga en cuenta que el resultado se ha redondeado.