MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como formatar números com vírgulas no SQL


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.