Compartilhar via


RODADA (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Ponto de extremidade de análise de SQL no Microsoft FabricDepósito no Microsoft FabricBanco de dados SQL no Microsoft Fabric

Retorna um valor numérico, arredondado, para o comprimento ou precisão especificados.

Convenções de sintaxe de Transact-SQL

Sintaxe

ROUND ( numeric_expression , length [ , function ] )

Argumentos

numeric_expression

Uma expression da categoria de tipo de dados numéricos exatos ou aproximados.

length

A precisão para a qual numeric_expression deve ser arredondada. length deve ser uma expressão do tipo tinyint, smallint ou int. Quando length é um número positivo, numeric_expression é arredondado para o número de posições decimais especificado por length. Quando length é um número negativo, numeric_expression é arredondado à esquerda da vírgula decimal, conforme especificado por length.

função

O tipo de operação a ser realizada. A função deve ser minuente,pequena ouint. Quando a função é omitida ou tem valor de 0 (padrão), numeric_expression é arredondada. Quando um valor diferente de 0 é especificado, numeric_expression é truncado.

Tipos de retorno

Retorna os tipos de dados a seguir.

Resultado da expressão Tipo de retorno
tinyint int
smallint int
int int
bigint bigint
Categorias decimal e numeric (p, s) decimal(p, s)
Categorias money e smallmoney money
Categorias float e real float

Comentários

  • ROUND sempre retorna um valor. Se o comprimento for negativo e maior que o número de dígitos antes do ponto decimal, ROUND retorna 0.

    Exemplo Resultado
    ROUND(748.58, -4) 0
  • ROUND retorna um numeric_expression arredondado, independentemente do tipo de dado, quando o comprimento é um número negativo.

    Exemplos Resultado
    ROUND(748.58, -1) 750.00
    ROUND(748.58, -2) 700.00
    ROUND(748.58, -3) Isso resulta em um transbordamento aritmético, porque 748,58 por padrão é decimal(5, 2), que não pode devolver 1000.00.
  • Para arredondar para quatro dígitos, mude o tipo de dado da entrada. Por exemplo:

    SELECT ROUND(CAST (748.58 AS DECIMAL (6, 2)), -3);
    

    Veja a seguir o conjunto de resultados.

    1000.00
    
  • ROUND Quebra empates arredondando metade a partir de zero (também conhecido como arredondamento comercial).

    Exemplos Resultado
    ROUND(1.15, 1) 1,2
    ROUND(-1.15, 1) -1,2

Exemplos

a. Use ROUND e estimativas

O exemplo a seguir mostra duas expressões que demonstram usando ROUND, o último dígito é sempre uma estimativa.

SELECT ROUND(123.9994, 3),
       ROUND(123.9995, 3);
GO

Veja a seguir o conjunto de resultados.

----------- -----------
123.9990    124.0000

B. Use aproximações de ARREDONDAMENTO e arredondamento

O exemplo a seguir mostra arredondamentos e aproximações.

SELECT ROUND(123.4545, 2),
       ROUND(123.45, -2);

Veja a seguir o conjunto de resultados.

----------  ----------
123.4500    100.00

C. Use ROUND para truncar

O exemplo a seguir usa duas instruções SELECT para demonstrar a diferença entre arredondamento e truncagem. A primeira instrução arredonda o resultado. A segunda instrução trunca o resultado.

SELECT ROUND(150.75, 0);
GO

Veja a seguir o conjunto de resultados.

151.00
SELECT ROUND(150.75, 0, 1);
GO

Veja a seguir o conjunto de resultados.

150.00