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

Exemplos de ROUND() no SQL Server


No SQL Server, o T-SQL ROUND() A função permite arredondar um número para um comprimento ou precisão especificados.

Você fornece o número como um argumento, bem como o comprimento para o qual deseja que o número seja arredondado. A função também aceita um terceiro argumento opcional que permite especificar se o número é arredondado ou truncado.


Sintaxe


A sintaxe fica assim:
ROUND ( numeric_expression , length [ ,function ] )  

Onde os argumentos têm as seguintes definições:
expressão_numérica
É uma expressão da categoria de tipo de dados numéricos exatos ou numéricos aproximados, exceto para o bit tipo de dados.
comprimento
É a precisão para a qual numeric_expression deve ser arredondado. Este argumento deve ser uma expressão do tipo tinyint , pequeno , ou int . Quando for um número positivo, numeric_expression é arredondado para o número de casas decimais especificadas por este argumento. Quando for um número negativo, numeric_expression é arredondado no lado esquerdo do ponto decimal, conforme especificado por este argumento.
função
É o tipo de operação a ser executada. Deve ser tinyint , pequeno , ou int . Quando este argumento é omitido ou tem valor 0 (padrão), numeric_expression é arredondado. Quando um valor diferente de 0 é especificado, numeric_expression está truncado.

Exemplo 1 – Uso básico


Aqui está um exemplo básico para demonstrar como essa função funciona.
SELECT ROUND(1.49, 1) Result;

Resultado:
+----------+
| Result   |
|----------|
| 1.50     |
+----------+

Neste caso, o número é arredondado para cima.

Exemplo 2 – Casas decimais zero


Se definirmos o segundo argumento como zero, eis o que acontece:
SELECT ROUND(1.49, 0) Result;

Resultado:
+----------+
| Result   |
|----------|
| 1.00     |
+----------+

Isso ocorre porque especificamos zero partes fracionárias para arredondar o número.

E aqui está o que acontece se eu alterar o número inicial para 1,50:
SELECT ROUND(1.50, 0) Result;

Resultado:
+----------+
| Result   |
|----------|
| 2.00     |
+----------+

Exemplo 3 – Mais casas decimais


Aqui está um exemplo onde o número a ser arredondado contém mais casas decimais.
SELECT ROUND(1.234, 2) Result;

Resultado:
+----------+
| Result   |
|----------|
| 1.230    |
+----------+

E aqui está o que acontece quando eu aumento o último dígito para 5:
SELECT ROUND(1.235, 2) Result;

Resultado:
+----------+
| Result   |
|----------|
| 1.240    |
+----------+

Claro, poderíamos usar muito mais casas decimais. Por exemplo, poderíamos reduzir muitas casas decimais.
SELECT ROUND(1.23456789123456789, 8) Result;

Resultado:
+---------------------+
| Result              |
|---------------------|
| 1.23456789000000000 |
+---------------------+

Exemplo 4 – Truncamento (ou seja, usando um terceiro argumento)


Como mencionado, podemos fornecer um terceiro argumento para especificar se o resultado é truncado ou apenas arredondado. Os exemplos anteriores são todos arredondados porque não especificamos um terceiro argumento. Quando omitimos o terceiro argumento, um valor de 0 é usado (o que significa arredondar o resultado). Se fornecermos um valor diferente de 0, o resultado será truncado.
SELECT 
  ROUND(1.236, 2) 'Rounded (by default)',
  ROUND(1.236, 2, 0) 'Rounded (explicitly)',
  ROUND(1.236, 2, 1) 'Truncated';

Resultado:
+------------------------+------------------------+-------------+
| Rounded (by default)   | Rounded (explicitly)   | Truncated   |
|------------------------+------------------------+-------------|
| 1.240                  | 1.240                  | 1.230       |
+------------------------+------------------------+-------------+

Exemplo 5 – Usando um valor negativo para o segundo argumento


Veja como podemos usar um valor negativo no segundo argumento para fazer com que partes da parte não fracionária sejam arredondadas para zero.
SELECT ROUND(123.456, -1) Result;

Resultado:
+----------+
| Result   |
|----------|
| 120.000  |
+----------+

E aqui está como ele fica arredondado se aumentarmos o 3 para 5 ou mais.
SELECT ROUND(125.456, -1) Result;

Resultado:
+----------+
| Result   |
|----------|
| 130.000  |
+----------+

Você pode fazer isso mesmo que o número não contenha parte fracionária.
SELECT ROUND(125, -1) Result;

Resultado:
+----------+
| Result   |
|----------|
| 130      |
+----------+

Exemplo 6 – Arredondamento de números negativos x números positivos


Conforme visto nos exemplos anteriores, ao usar números positivos, um valor com uma parte fracionária de 0,5 ou maior é arredondado para o próximo inteiro.

No entanto, ao usar números negativos, esses valores são arredondados para baixo .
SELECT 
  ROUND(1.50, 0) Positive,
  ROUND(-1.50, 0) Negative;

Resultado:
+------------+------------+
| Positive   | Negative   |
|------------+------------|
| 2.00       | -2.00      |
+------------+------------+