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

4 funções para formatar um número para 2 casas decimais no SQL Server


Ao usar o T-SQL com o SQL Server, podemos formatar números usando vários métodos, dependendo do formato desejado.

Abaixo estão quatro funções que podem ser usadas para formatar um número com duas casas decimais no SQL Server.

O CAST() Função


A maneira mais óbvia de fazer isso é converter o número em um tipo decimal. Duas funções que podem fazer isso para nós são CAST() e CONVERT() .

Aqui está um exemplo de uso de CAST() :
SELECT CAST(275 AS DECIMAL(5, 2));

Resultado:
275.00

Podemos usar esse método mesmo que o número já seja um valor decimal, mas com mais casas decimais.

Uma coisa a lembrar, porém, é que, se você estiver reduzindo o número de casas decimais de um número com mais de duas casas decimais, poderá terminar com a segunda casa decimal sendo arredondada:
SELECT CAST(275.4567 AS DECIMAL(5, 2));

Resultado:
275.46

O CONVERT() Função


Aqui, usamos CONVERT() para fazer a mesma coisa - converter o número para decimal:
SELECT CONVERT(DECIMAL(5, 2), 275);

Resultado:
275.00

O FORMAT() Função


Outra maneira de formatar um número com duas casas decimais é usar o FORMAT() função:
SELECT FORMAT(275, 'N2');

Resultado:
275.00

Essa função realmente converte o número em uma string, portanto, tecnicamente, o resultado não é um tipo numérico.

O N2 parte é referida como uma string de formato. Neste caso, N é para número e 2 é para o número de casas decimais (você pode aumentar ou diminuir isso conforme necessário).

A mesma técnica pode ser usada para reduzir as casas decimais para duas, a partir de um número com mais casas decimais:
SELECT FORMAT(275.4567, 'N2');

Resultado:
275.46

Foi arredondado, assim como quando convertemos o número no outro exemplo.

Outra maneira de fazer isso é usar uma string de formato personalizado. As strings de formato personalizado permitem especificar um formato que pode não ser suportado por uma string de formato padrão.

Aqui está um exemplo de uso de strings de formato personalizado:
SELECT 
    FORMAT(275, '###.##') AS "###.##",
    FORMAT(275, '000.00') AS "000.00",
    FORMAT(275.4567, '###.##') AS "###.##",
    FORMAT(275.4567, '000.00') AS "000.00";

Resultado:
+----------+----------+----------+----------+
| ###.##   | 000.00   | ###.##   | 000.00   |
|----------+----------+----------+----------|
| 275      | 275.00   | 275.46   | 275.46   |
+----------+----------+----------+----------+

Podemos ver que há uma diferença entre usar # e 0 na cadeia de formato. O # especificador de formato suprime quaisquer zeros insignificantes enquanto o 0 especificador de formato não.

Mas talvez mais importante (para os propósitos deste artigo), o 0 especificador de formato permite adicionar zeros insignificantes se eles não estiverem presentes no número original. Portanto, ele pode ser usado para adicionar duas casas decimais a um inteiro (como visto no exemplo acima).

O STR() Função


Outra maneira de formatar um número com duas casas decimais é usar o STR() função:
SELECT STR(275, 6, 2);

Resultado:
275.00

Esta função retorna dados de caracteres convertidos de dados numéricos. Os dados de caractere são justificados à direita, com comprimento e precisão decimal especificados.

O primeiro argumento é uma expressão do tipo de dados float com um ponto decimal.

O segundo argumento é o comprimento total. Isso inclui ponto decimal, sinal, dígitos e espaços. O padrão é 10.

O terceiro argumento é o número de casas à direita do ponto decimal. Deve ser menor ou igual a 16.