PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

3 maneiras de formatar um número como uma porcentagem no PostgreSQL


Temos várias opções se quisermos exibir números com um sinal de porcentagem no PostgreSQL.

Podemos usar o TO_CHAR() função para formatar o número junto com o sinal de porcentagem. Ou podemos simplesmente concatenar o número com o sinal de porcentagem, seja com o CONCAT() função ou com o operador de concatenação.

O TO_CHAR() Função


Essa opção envolve passar o número e um padrão de modelo numérico para a função para retornar o número formatado da maneira especificada pelo padrão de modelo. Para obter um sinal de porcentagem, incluímos em nosso padrão de modelo:
SELECT TO_CHAR(35, 'fm00D00%');

Resultado:
35.00%

Aqui, usei o 0 padrão de modelo, 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 padrões de modelo:
SELECT 
    TO_CHAR(7, 'fm00%') AS "1",
    TO_CHAR(7, 'fm99%') AS "2",
    TO_CHAR(7.4567, 'fm0D00%') AS "3",
    TO_CHAR(7, 'fm0D00%') AS "4";

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 
    TO_CHAR(35 * 0.1, 'fm99D00%') AS "1",
    TO_CHAR(0.35 * 100, 'fm99D00%') AS "2";

Resultado:
+-------+--------+
|   1   |   2    |
+-------+--------+
| 3.50% | 35.00% |
+-------+--------+

Neste caso eu incluo o 9 padrão de modelo para que quaisquer zeros à esquerda sejam omitidos.

O CONCAT() Função


Outra maneira de fazer isso é usar o CONCAT() função para concatenar o número e o sinal de porcentagem:
SELECT CONCAT(35, '%');

Resultado:
35%

O operador de concatenação


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

Resultado:
35%