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

Dar formato a un número como un porcentaje en Oracle

Aunque Oracle Database tiene un TO_CHAR(number) función que nos permite formatear números, no proporciona un elemento de formato para el signo de porcentaje.

Por lo tanto, si queremos formatear un número como un porcentaje en Oracle Database, debemos concatenar el signo de porcentaje y el número.

Ejemplo

Podemos usar el CONCAT() función para concatenar el número y el signo de porcentaje.

Todavía podemos usar el TO_CHAR(number) función para formatear el número para que tenga los lugares decimales deseados, ceros a la izquierda (o no), etc.:

SELECT CONCAT(TO_CHAR(18, 'fm00D00'), '%')
FROM DUAL;

Resultado:

18.00%

Aquí, usé el 0 elemento de formato, lo que significa que la posición del dígito siempre se imprimirá, incluso si contiene un cero al principio o al final.

También usé el fm modificador de formato para suprimir los ceros iniciales o finales o los espacios en blanco.

Aquí está con algunos otros modelos de formato:

SELECT 
    CONCAT(TO_CHAR(7, 'fm00'), '%') AS "1",
    CONCAT(TO_CHAR(7, 'fm99'), '%') AS "2",
    CONCAT(TO_CHAR(7.4567, 'fm0D00'), '%') AS "3",
    CONCAT(TO_CHAR(7, 'fm0D00'), '%') AS "4"
FROM DUAL;

Resultado:

     1     2        3        4 
______ _____ ________ ________ 
07%    7%    7.46%    7.00%   

Podemos realizar un cálculo contra el número si es necesario:

SELECT 
    CONCAT(TO_CHAR(18 * 0.1, 'fm99D00'), '%') AS "1",
    CONCAT(TO_CHAR(0.18 * 100, 'fm99D00'), '%') AS "2"
FROM DUAL;

Resultado:

       1         2 
________ _________ 
1.80%    18.00%   

En este caso incluí el 9 elemento de formato para que se omitan los ceros iniciales.

Omitir TO_CHAR() Función

Si no tenemos una necesidad específica de formatear el número que no sea convertirlo a un formato de porcentaje, entonces ni siquiera necesitamos el TO_CHAR() función:

SELECT CONCAT(18, '%')
FROM DUAL;

Resultado:

18%

El Operador de Concatenación

Otra forma de concatenar el número y el signo de porcentaje es usar el operador de concatenación (|| ):

SELECT 18 || '%'
FROM DUAL;

Resultado:

18%

Y aquí está con TO_CHAR() función agregada para formato adicional:

SELECT TO_CHAR(18, 'fm00D00') || '%'
FROM DUAL;

Resultado:

18.00%