No PostgreSQL, podemos usar o
TO_CHAR()
função para formatar números em um determinado formato. Isso inclui a formatação de números com vírgulas no local relevante. PostgreSQL também tem um
money
tipo de dados, que gera o valor usando a localidade atual. Isso pode incluir vírgulas no local apropriado, com base na localidade que está sendo usada. O TO_CHAR()
Função
Aqui está um exemplo de uso do
TO_CHAR()
função para gerar um número com vírgulas:SELECT TO_CHAR(123456.78, 'fm999G999D99');
Resultado:
123,456.78
O segundo argumento consiste em vários padrões de modelo numéricos que determinam como o primeiro argumento é formatado.
Aqui, usei o
G
padrão de modelo para um separador de grupo com reconhecimento de localidade (também conhecido como "separador de milhares"). Eu poderia ter usado uma vírgula (,
), mas isso não teria reconhecimento de localidade. Eu também usei o
D
padrão de modelo para um separador decimal com reconhecimento de localidade. Nesse caso, também usei
fm
(que significa “Modo de Preenchimento”) para suprimir quaisquer zeros à direita e espaços em branco à esquerda que possam ter sido aplicados automaticamente ao resultado. O
9
padrão de modelo é para cada dígito. Você pode usar 0
em vez disso, se desejar incluir zeros à esquerda. Porque o
G
e D
os padrões de modelo reconhecem a localidade, eles são capazes de produzir o caractere apropriado para o grupo e os separadores decimais. Aqui está um exemplo para demonstrar o que quero dizer:
SET lc_numeric = 'fr_FR';
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Resultado:
123,456.78
Agora, o separador de grupo é representado por um ponto/ponto final, e o separador decimal é representado por uma vírgula. Isso ocorre porque alterei o
lc_numeric
variável para usar fr_FR
(para a França), e é costume francês ter seu separador de grupo e ponto decimal representado dessa maneira. Diferentes localidades têm convenções diferentes para formatar números, e o
G
e D
modificadores de formato são capazes de determinar quais caracteres usar para separadores de grupo e o separador decimal . O money
Tipo de dados
PostgreSQL tem um
money
tipo de dados que gera seus valores formatados com reconhecimento de localidade. Exemplo:
SET lc_monetary = 'en_US';
SELECT CAST(123456.78 AS money);
Resultado:
$123,456.78
Agora vamos alterar o
lc_monetary
variável e veja como isso afeta a saída:SET lc_monetary = 'fr_FR';
SELECT CAST(123456.78 AS money);
Resultado:
123 456,78 Eu
Neste caso, o separador de grupo é representado por um espaço e o separador decimal é uma vírgula.