ROUND (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

指定された長さまたは有効桁数に丸めた数値を返します。

Transact-SQL 構文表記規則

構文

ROUND ( numeric_expression , length [ ,function ] )  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

numeric_expression
真数または概数のデータ型カテゴリのです。

length
numeric_expression を丸める際の有効桁数です。 length には、tinyintsmallint、または int 型の式を指定する必要があります。length に正の値を指定した場合、numeric_expressionlength で指定した小数点以下桁数に丸められます。 length に負の値を指定した場合、numeric_expression の小数点の左側が length で指定した桁数に丸められます。

function
実行する操作の種類です。 function には、tinyintsmallint、または int を指定する必要があります。function が省略されているか値が 0 (既定) の場合、numeric_expression は丸められます。 0 以外の値を指定した場合、numeric_expression は切り捨てられます。

戻り値の型

次のデータ型を返します。

式の結果 の戻り値の型 :
tinyint int
smallint int
int int
bigint bigint
decimal および numeric カテゴリ (p, s) decimal(p, s)
money および smallmoney カテゴリ money
float および real カテゴリ float

注釈

ROUND は常に値を返します。 length が負の値で、整数部の桁数より大きい場合、ROUND は 0 を返します。

結果
ROUND (748.58, -4) 0

ROUND は、length が負の値であるときは、データ型に関係なく、numeric_expression を丸めて返します。

結果
ROUND (748.58, -1) 750.00
ROUND (748.58, -2) 700.00
ROUND(748.58, -3) 748.58 の既定値は decimal(5,2) となり、1000.00 を返すことができないため、結果は算術オーバーフローになります。
4 桁までに丸めるには、入力のデータ型を変更します。 次に例を示します。

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

A. ROUND と概数を使用する

次の例では、ROUND を使用することにより最後の桁が常に概数になることを表す 2 つの式を示します。

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

結果セットは次のようになります。

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

B. ROUND を使用して概数を丸める

次の例では、数値を丸めて概数化します。

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

結果セットは次のようになります。

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

C. ROUND を使用して切り捨てを行う

次の例では、2 つの SELECT ステートメントを使用して、丸め処理と切り捨て処理の違いを示します。 最初のステートメントは、結果を丸めます。 2 番目のステートメントは、結果を切り捨てます。

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

結果セットは次のようになります。

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

参照

CEILING (Transact-SQL)
データ型 (Transact-SQL)
式 (Transact-SQL)
FLOOR (Transact-SQL)
数学関数 (Transact-SQL)