ROUND (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)SQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric

Restituisce un valore numerico arrotondato alla lunghezza o alla precisione specificata.

Convenzioni di sintassi Transact-SQL

Sintassi

ROUND ( numeric_expression , length [ ,function ] )  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

numeric_expression
Espressione della categoria di tipi di dati numerici esatti o numerici approssimativi.

length
Precisione per l'arrotondamento di numeric_expression . length deve essere un'espressione di tipo tinyint, smallint o int. Quando length è un numero positivo, numeric_expression viene arrotondato al numero di posizioni decimali specificate per lunghezza. Quando length è un numero negativo, numeric_expression viene arrotondato a sinistra del separatore decimale come specificato da length.

function
Tipo di operazione da eseguire. la funzione deve essere tinyint, smallint o int. Quando la funzione viene omessa o ha un valore pari a 0 (impostazione predefinita), numeric_expression viene arrotondata. Se è specificato un valore diverso da 0, l'argomento numeric_expression viene troncato.

Tipi restituiti

Restituisce i tipi di dati seguenti:

Risultato dell'espressione Tipo restituito
tinyint int
smallint int
int int
bigint bigint
Categoria decimal e numeric (p, s) decimal(p, s)
Categoria money e smallmoney money
Categoria float e real float

Osservazioni:

La funzione ROUND restituisce sempre un valore. Se l'argomento length è negativo e maggiore del numero di cifre che precedono il separatore decimale, la funzione ROUND restituisce 0.

Esempio Risultato
ROUND(748.58, -4) 0

La funzione ROUND restituisce un valore numeric_expression arrotondato indipendentemente dal tipo di dati quando length è un numero negativo.

Esempi Risultato
ROUND(748.58, -1) 750.00
ROUND(748.58, -2) 700.00
ROUND(748.58, -3) Genera un overflow aritmetico, perché 748.58 assume il valore decimal(5,2), tramite il quale non può essere restituito 1000.00.
Per un arrotondamento fino a 4 cifre, modificare il tipo di dati di input. Ad esempio:

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

Esempi

R. Utilizzo della funzione ROUND e delle stime

In questo esempio vengono utilizzate due espressioni per illustrare che con la funzione ROUND l'ultima cifra è sempre una stima.

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

Questo è il set di risultati.

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

B. Utilizzo della funzione ROUND e delle approssimazioni di arrotondamento

Nell'esempio seguente vengono illustrati l'arrotondamento e l'approssimazione.

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

Questo è il set di risultati.

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

C. Utilizzo della funzione ROUND per ottenere un troncamento

Nell'esempio seguente vengono utilizzate due istruzioni SELECT per illustrare la differenza tra l'arrotondamento e il troncamento. La prima istruzione arrotonda il risultato, la seconda lo tronca.

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

Questo è il set di risultati.

--------  
151.00  
  
(1 row(s) affected)  
  
--------  
150.00  
  
(1 row(s) affected)  

Vedi anche

CEILING (Transact-SQL)
Tipi di dati (Transact-SQL)
Espressioni (Transact-SQL)
FLOOR (Transact-SQL)
Funzioni matematiche (Transact-SQL)