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%