Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Formatar um número como uma porcentagem no Oracle


Mesmo que o Oracle Database tenha um TO_CHAR(number) função que nos permite formatar números, ela não fornece um elemento de formato para o sinal de porcentagem.

Portanto, se quisermos formatar um número como porcentagem no Oracle Database, precisamos concatenar o sinal de porcentagem e o número.

Exemplo


Podemos usar o CONCAT() função para concatenar o número e o sinal de porcentagem.

Ainda podemos usar o TO_CHAR(number) função para formatar o número para que ele tenha as casas decimais desejadas, zeros à esquerda (ou não), etc:
SELECT CONCAT(TO_CHAR(18, 'fm00D00'), '%')
FROM DUAL;

Resultado:
18.00%

Aqui, usei o 0 elemento de formato, o que significa que a posição do dígito sempre será impressa, mesmo que contenha um zero à esquerda/à direita.

Eu também usei o fm modificador de formato para suprimir quaisquer zeros ou espaços em branco à esquerda/à direita.

Aqui está com alguns outros 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 um cálculo em relação ao número, se necessário:
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%   

Neste caso eu incluí o 9 elemento de formato para que quaisquer zeros à esquerda sejam omitidos.

Omitindo o TO_CHAR() Função


Se não tivermos nenhuma necessidade específica de formatar o número além de convertê-lo em um formato de porcentagem, nem precisaremos do TO_CHAR() função:
SELECT CONCAT(18, '%')
FROM DUAL;

Resultado:
18%

O operador de concatenação


Outra maneira de concatenar o número e o sinal de porcentagem é usar o operador de concatenação (|| ):
SELECT 18 || '%'
FROM DUAL;

Resultado:
18%

E aqui está com o TO_CHAR() função adicionada para formatação extra:
SELECT TO_CHAR(18, 'fm00D00') || '%'
FROM DUAL;

Resultado:
18.00%