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

Como formatar números no SQL


A maioria dos principais RDBMSs fornece maneiras de formatarmos números usando SQL. Alguns fornecem apenas recursos básicos de formatação, enquanto outros são mais avançados.

Abaixo estão exemplos de formatação de um número em alguns dos RDBMSs mais populares.

MySQL


No MySQL, podemos usar o FORMAT() função para formatar um número para um formato específico. Esta função aceita três parâmetros; o número, o número de casas decimais e uma localidade opcional:
SELECT FORMAT(123456.789, 2);

Resultado:
123,456.79

Conforme mencionado, você também pode passar um terceiro argumento para especificar a localidade a ser usada para o padrão de formatação. Consulte Como formatar números no MySQL para obter um exemplo.

Para formatar números como moeda, consulte Como formatar números como moeda no MySQL.

Oráculo


O Oracle Database nos oferece várias opções quando se trata de formatar números.

Em particular, o TO_CHAR(number) A função nos permite formatar um número com base em nosso próprio modelo de formato personalizado.

Exemplo:
SELECT 
    TO_CHAR(12345, 'fmL99G999D00')
FROM DUAL;

Resultado:
$12,345.00

O primeiro argumento é o número a ser formatado e o segundo argumento é o modelo de formato. O modelo de formato consiste em um ou mais elementos de formato, cada um representando um elemento diferente na saída formatada.

No exemplo acima, usamos o 9 caractere para representar cada dígito e o 0 caractere para gerar o dígito ou zero (dependendo se existe ou não um dígito nessa posição). Também usamos G para um separador de grupo com reconhecimento de localidade e D para um separador decimal com reconhecimento de localidade. O fm O elemento suprime qualquer preenchimento à esquerda ou à direita que possa ser aplicado ao resultado.

Aqui está uma lista completa de elementos de formato que você pode usar para seu modelo de formato ao formatar números.

Existem outras maneiras de formatar números no Oracle. Por exemplo, o LPAD() A função pode ser usada para converter números em uma string e formatá-los exatamente como você gosta em tempo real. Funções como CAST() também pode afetar como um número é formatado, dependendo do tipo de dados para o qual ele está sendo convertido.

Consulte Como formatar números no Oracle para obter mais detalhes e exemplos.

PostgreSQL


Assim como o Oracle, o PostgreSQL também possui um TO_CHAR() função, e funciona praticamente da mesma maneira:
SELECT TO_CHAR(923, 'fm000G000th');

Resultado:
000,923rd

Aqui, usei o 0 elemento de formato para gerar zeros à esquerda, mesmo quando o número original não tiver nenhum dígito nesse local. Nesse caso, usei o th elemento de formato para converter o número em seu ordinal. Eu também usei G para um separador de grupo com reconhecimento de localidade.

Aqui está uma lista de padrões de modelo em que a string de formato pode consistir ao formatar números, bem como os modificadores de formato.

Outra maneira de formatar um número no PostgreSQL é convertê-lo para o formato money tipo de dados. Números armazenados como o money type são emitidos em um formato que reconhece a localidade, com o símbolo de moeda apropriado, separador de grupo, separador decimal, etc:
SELECT CAST(10000 as money);

Resultado:
$10,000.00

Consulte Como formatar números no PostgreSQL para obter mais exemplos de formatação de números no PostgreSQL.

SQL Server


SQL Server tem o FORMAT() função, que funciona muito como Oracle e PostgreSQL do TO_CHAR() função, na medida em que permite formatar números com base em 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 |
+------------+----------------+-------------+

Este exemplo demonstra três especificadores de formato padrão – cada um dos quais gera o número em um formato específico.

Também podemos usar nossos próprios especificadores de formato personalizados, que nos permitem criar nosso próprio formato, caso o formato padrão não seja o que queremos.

Você também pode fazer coisas como formatar números em seu equivalente hexadecimal ou usar notação exponencial, etc.

E você pode passar um terceiro argumento opcional para especificar a localidade para a qual formatar o número (ele formata o número usando as convenções dessa localidade).

Consulte Como formatar números no SQL Server para obter mais exemplos.

MariaDB


Assim como o MySQL, o MariaDB tem um FORMAT() função, que fornece formatação básica de números.

Aqui está um exemplo de como usar esta função para formatar um número usando diferentes localidades:
SELECT 
    FORMAT(123456.789, 2, 'ta_IN') AS "Tamil, India",
    FORMAT(123456.789, 2, 'de_DE') AS "German, Germany",
    FORMAT(123456.789, 2, 'zh_HK') AS "Chinese, Hong Kong";

Resultado:
+--------------+-----------------+--------------------+
| Tamil, India | German, Germany | Chinese, Hong Kong |
+--------------+-----------------+--------------------+
| 1,23,456.79  | 123.456,79      | 123,456.79         |
+--------------+-----------------+--------------------+

Veja Como formatar números no MariaDB para mais exemplos.

SQLite


O SQLite é mais limitado que os outros SGBDs quando se trata de formatar números. No entanto, existem maneiras de obter alguma formatação básica de números:
SELECT PRINTF("%,d", 123456789);

Resultado:
123,456,789

O PRINTF() A função pode gerar separadores de grupo para números inteiros, mas não para números de ponto real/flutuante. Para formatar números de ponto real/flutuante, você precisaria trabalhar um pouco mais. Consulte Formatar números com vírgula no SQLite para obter um exemplo do que quero dizer.

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