A maioria dos principais RDBMSs tem funções que nos permitem formatar números com vírgulas como separador de grupo ou separador decimal.
Alguns RDBMSs também produzem determinados tipos de dados numéricos com vírgulas no local relevante.
Abaixo estão exemplos de formatação de números com vírgulas em alguns dos DBMSs mais populares.
MySQL
No MySQL, podemos usar o
FORMAT()
função para formatar números com vírgulas:SELECT FORMAT(123456.789, 2);
Resultado:
123,456.79
Não há necessidade de especificar onde as vírgulas devem ir. A função sabe onde colocá-los.
Esta função também aceita um terceiro argumento para especificar a localidade. Nem todas as localidades usam uma vírgula como separador de grupo – algumas localidades usam uma vírgula como separador decimal. O
FORMAT()
função é inteligente o suficiente para saber qual convenção usar. Exemplo:
SELECT FORMAT(123456.789, 2, 'de_DE');
Resultado:
123,456.79
Oráculo
No Oracle podemos usar o
TO_CHAR()
função para formatar um número com vírgulas:SELECT TO_CHAR(12345, 'fm99G999D00')
FROM DUAL;
Resultado:
12,345.00
O
G
elemento de formato é um espaço reservado para o separador de grupo e o D
é para o separador decimal. Nesse caso, o separador de grupo gera uma vírgula e o caractere decimal gera um ponto. Isso porque o
NLS_TERRITORY
da minha sessão atual parâmetro está definido como Australia
. É verdade que poderíamos usar apenas uma vírgula codificada em vez do
G
elemento de formato, mas que assume que o separador de grupo é uma vírgula. Nem todas as localidades usam uma vírgula como separador de grupo. Consulte Como formatar um número com vírgula no Oracle para obter mais informações e exemplos de formatação de números com vírgulas no Oracle.
SQL Server
No SQL Server podemos usar o
FORMAT()
função para formatar números com vírgulas. Esta função aceita o número e uma string de formato:SELECT
FORMAT(123456.789, 'N') AS "Number",
FORMAT(123456.789, 'P') AS "Percent",
FORMAT(123456.789, 'C') AS "Currency";
Resultado:
+------------+----------------+-------------+ | Number | Percent | Currency | |------------+----------------+-------------| | 123,456.79 | 12,345,678.90% | $123,456.79 | +------------+----------------+-------------+
A função também aceita um argumento opcional de “cultura” para especificar a localidade a ser usada para a saída formatada.
Você também pode construir sua própria cadeia de caracteres de formato personalizado para determinar com precisão para onde vai cada separador de milhares e separador decimal.
Consulte Como formatar números com vírgulas no SQL Server para obter exemplos.
PostgreSQL
PostgreSQL tem um
TO_CHAR()
função que funciona como a função do Oracle de mesmo nome:SELECT TO_CHAR(123456.78, 'fm999G999D99');
Resultado:
123,456.78
Esta função reconhece a localidade, portanto, apresentará o grupo apropriado e os separadores decimais para a localidade.
PostgreSQL também tem um
money
tipo de dados, que é gerado em um formato com reconhecimento de localidade. Consulte Formatar números com vírgulas no PostgreSQL para obter um exemplo. SQLite
SQLite é um pouco mais limitado quando comparado com a maioria dos outros DBMSs. No entanto, ele tem um
printf()
função que nos permite formatar números de acordo com uma string de formato:SELECT printf("%,d", 123456789);
Resultado:
123,456,789
Isso funciona bem com números inteiros, mas números de ponto real/flutuante exigem um pouco mais de trabalho. Consulte Formatar números com vírgula no SQLite para saber mais sobre isso.
Atualizar :SQLite 3.38.0 (lançado em 22 de fevereiro de 2022) renomeou o
printf()
função para format()
. O printf()
original name é mantido como um alias para compatibilidade com versões anteriores. Portanto, o exemplo acima pode ser alterado para isso:
SELECT format("%,d", 123456789);
Resultado:
123,456,789
MariaDB
No MariaDB, podemos usar o
FORMAT()
função para formatar um número com vírgulas:SELECT FORMAT(123456.789, 2);
Resultado:
123,456.79
Assim como na função MySQL de mesmo nome, não há necessidade de especificar onde as vírgulas devem ir. A função sabe onde colocá-los.