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

Formatar um número como moeda no SQL


Alguns SGBDs têm funções que nos permitem formatar números como moeda apenas passando a string de formato apropriada. Isso converte o número em uma string com o símbolo de moeda aplicável, separador de grupo e ponto decimal (se relevante).

Outros DBMSs não facilitam isso e você precisa trabalhar um pouco primeiro.

Abaixo estão exemplos de uso do SQL para formatar números como moeda em alguns dos DBMSs mais populares.

Oráculo


O Oracle Database nos fornece o TO_CHAR(number) função, que nos permite formatar números passando um modelo de formato (ou string de formato). Podemos usar esta função para retornar um número como moeda.

A Oracle fornece alguns elementos de formato para retornar o símbolo de moeda, dependendo de qual símbolo de moeda você precisa – o símbolo de moeda local, o símbolo de moeda ISO ou o símbolo de moeda dupla.

Aqui está um exemplo de todos os três:
ALTER SESSION SET NLS_TERRITORY = 'Denmark';
SELECT 
    TO_CHAR(12345, 'fmL99G999D00') AS "r1",
    TO_CHAR(12345, 'fmC99G999D00') AS "r3",
    TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL;

Resultado:
            r1              r3            r3 
______________ _______________ _____________ 
kr12.345,00    DKK12.345,00    €12.345,00   

Consulte Como formatar um número como moeda no Oracle para obter mais informações e exemplos.

SQL Server


O SQL Server fornece a função FORMAT(), que nos permite formatar números e datas. O C especificador de formato pode ser usado para retornar um número como moeda:
SELECT FORMAT(1234, 'C');

Resultado:
$1,234.00

Há outras coisas que você pode fazer com a string de formato, como especificar quantas casas decimais retornar.

A função também aceita um terceiro argumento opcional, que pode ser usado para especificar a localidade a ser usada para a formatação de número e moeda. Diferentes localidades usam convenções diferentes para seus números e moeda.

Consulte Como formatar números como moeda no SQL Server (T-SQL) para obter mais informações e exemplos.

PostgreSQL


PostgreSQL tem um money tipo de dados que normalmente será formatado na moeda local na saída:
SELECT CAST(3145 as money);

Resultado:
$3,145.00

PostgreSQL também tem um TO_CHAR() função que converte o valor em uma string e o formata com base na string de formato que fornecemos. Portanto, podemos usá-lo para formatar números como moeda passando a string de formato apropriada.

Veja Como formatar números como moeda no PostgreSQL para saber mais.

MySQL


No MySQL, temos que trabalhar um pouco mais. O MySQL não nos fornece um especificador de formato para o símbolo da moeda, então precisamos fornecer o nosso próprio:
SELECT CONCAT('$', FORMAT(1234.5678, 2));

Resultado:
$1,234.57

Aqui, usamos o CONCAT() função para concatenar o símbolo da moeda e o número, e usamos a função FORMAT() função para formatar o número em nosso formato desejado.

É possível especificar uma localidade para a formatação numérica. Isso determina quais caracteres são usados ​​para o separador de grupo e ponto decimal.

Consulte Como formatar números como moeda no MySQL para obter mais informações.

MariaDB


O MariaDB é muito parecido com o MySQL, e podemos usar o mesmo método que usamos com o MySQL.

Aqui está um exemplo que especifica uma localidade a ser usada para a formatação do número:
SELECT CONCAT('€', FORMAT(8790.2398, 2, 'de_DE'));

Resultado:
€8.790,24

Neste caso, fornecemos o símbolo do Euro ( ) e formatou o número para usar as convenções de numeração usadas na Alemanha.

Consulte Formatar um número como moeda no MariaDB para obter mais informações.

SQLite


SQLite tem um PRINTF() função que nos permite formatar um número com base em uma string de formato. Por exemplo, podemos usar isso para formatar o número para um determinado número de casas decimais, além de adicionar um símbolo de moeda.
SELECT PRINTF("$%.2f", 123.457);

Resultado:
$123.46

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("$%.2f", 123.457);

Resultado:
$123.46

Veja a documentação do SQLite para saber mais sobre o FORMAT() função.