Administração do sistema

Como formatar um campo numérico em select no PostgreSQL?

RT.FAQ-107698
Em campos customizados ou mesmo em reports é desejada uma formatação específica para colunas com valores números (p.ex.: apresentar valores inteiros sem decimais). Para tanto, é possível configurar o select para formatar um campo numérico do PostgreSQL utilizando a expressão "FM" dentro do patern de to_char e a função "trim" para retirar pontos que não devem ser apresentados a direita (separador de decimal).

trim(both '.,' from coalesce(to_char(COLUNA_NUMERICA, 'FM9G999G999G990D999'), ''))

Exemplo:
select trim(both '.,' from coalesce(to_char(1234.000000, 'FM9G999G999G990D999'), ''))
Retorna:
1.234

Exemplo:
select trim(both '.,' from coalesce(to_char(1234.999, 'FM9G999G999G990D999'), ''))
Retorna:
1.234,999

Atenção
Caso o valor ultrapasse o número de casas decimais da máscara informada, o valor apresentado ser formatado com o valor inteiro superior ao valor ao valor informado.
P.ex.:
select trim(both '.,' from coalesce(to_char(1234.9999, 'FM9G999G999G990D999'), ''))
Retorna:
1.235

Quando a utilização for através de Telescope Script Engine, então pode-se setar o locale que dever ser utilizado na conexão com o comando:
set db.lc_numeric to 'pt_BR';
Assim, o comando abaixo já retorna com os pontos decimais corretos:
to_char(1234.9999, '999G999D999')


Atenção
Os separadores de grandeza de milhar e decimal utilizam o locale do sistema operacional.