Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como formatar números como moeda no SQL Server (T-SQL)


No SQL Server, você pode usar o T-SQL FORMAT() função para formatar um número como moeda.

O FORMAT() função permite formatar números, datas, moedas, etc. Aceita três argumentos; o número, o formato e um argumento opcional de “cultura”. Este artigo trata especificamente do uso do argumento de formato para especificar uma moeda.


Exemplo 1 – Uso básico


Aqui está um exemplo de formatação de um número como moeda:
SELECT FORMAT(1234, 'C') Result;

Resultado:
+-----------+
| Result    |
|-----------|
| $1,234.00 |
+-----------+

Neste caso, usei C como segundo argumento. Esta é a string de formato numérico padrão para Moeda.

Exemplo 2 – Sensibilidade entre maiúsculas e minúsculas


Este argumento não diferencia maiúsculas de minúsculas, portanto, C ou c retorna o mesmo resultado:
SELECT FORMAT(1234, 'c') Result;

Resultado:
+-----------+
| Result    |
|-----------|
| $1,234.00 |
+-----------+

Exemplo 3 – Casas decimais


Aqui está outro exemplo, desta vez usando C0 para especificar que não queremos casas decimais:
SELECT FORMAT(1234, 'C0') Result;

Resultado:
+----------+
| Result   |
|----------|
| $1,234   |
+----------+

Isso é chamado de “especificador de precisão”, provavelmente porque permite especificar a precisão com que o resultado é exibido.

Você também pode aumentar o número de casas decimais também:
SELECT FORMAT(1234, 'C4') Result;

Resultado:
+-------------+
| Result      |
|-------------|
| $1,234.0000 |
+-------------+

Exemplo 4 – Local


Todos os exemplos anteriores resultaram em um cifrão sendo prefixado ao número. Tudo bem se a moeda desejada estiver em dólares, mas e se você precisar exibi-la em uma moeda diferente?

Você pode usar um terceiro argumento para especificar a localidade. Isso resultará automaticamente no uso do símbolo de moeda apropriado para essa localidade:
SELECT FORMAT(1234, 'C', 'fr-FR') Result;

Resultado:
+------------+
| Result     |
|------------|
| 1 234,00 € |
+------------+

Aqui estão mais algumas localidades:
SELECT 
  FORMAT(1234, 'C', 'fr-FR') 'France',
  FORMAT(1234, 'C', 'zh-cn') 'China',
  FORMAT(1234, 'C', 'th-TH') 'Thailand',
  FORMAT(1234, 'C', 'de-DE') 'Germany';

Resultado:
+------------+-----------+------------+------------+
| France     | China     | Thailand   | Germany    |
|------------+-----------+------------+------------|
| 1 234,00 € | ¥1,234.00 | ฿1,234.00  | 1.234,00 € |
+------------+-----------+------------+------------+

Se a cultura argumento não for especificado, o idioma da sessão atual será usado.

Veja como encontrar o idioma da sessão atual e como configurá-lo.

Observe que o idioma atual geralmente será o mesmo que o idioma padrão do usuário, mas esse pode não ser o caso se o usuário tiver alterado o idioma atual usando SET LANGUAGE . De qualquer forma, você também pode descobrir qual é o idioma padrão.

Como você pode imaginar, você pode obter resultados bem diferentes dependendo do seu idioma atual ou do valor de qualquer argumento de “cultura”. Veja Como as configurações de idioma podem afetar seus resultados FORMAT() para mais exemplos.