ROUND (Transact-SQL)ROUND (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

指定された長さまたは有効桁数に丸めた数値を返します。Returns a numeric value, rounded to the specified length or precision.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

ROUND ( numeric_expression , length [ ,function ] )  

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

numeric_expressionnumeric_expression
bit データ型を除く、真数または概数データ型カテゴリの です。Is an expression of the exact numeric or approximate numeric data type category, except for the bit data type.

lengthlength
numeric_expression を丸める際の有効桁数です。Is the precision to which numeric_expression is to be rounded. length には、tinyintsmallint、または int 型の式を指定する必要があります。length に正の値を指定した場合、numeric_expressionlength で指定した小数点以下桁数に丸められます。length must be an expression of type tinyint, smallint, or int. When length is a positive number, numeric_expression is rounded to the number of decimal positions specified by length. length に負の値を指定した場合、numeric_expression の小数点の左側が length で指定した桁数に丸められます。When length is a negative number, numeric_expression is rounded on the left side of the decimal point, as specified by length.

functionfunction
実行する操作の種類です。Is the type of operation to perform. function には、tinyintsmallint、または int を指定する必要があります。function が省略されているか値が 0 (既定) の場合、numeric_expression は丸められます。function must be tinyint, smallint, or int. When function is omitted or has a value of 0 (default), numeric_expression is rounded. 0 以外の値を指定した場合、numeric_expression は切り捨てられます。When a value other than 0 is specified, numeric_expression is truncated.

戻り値の型Return Types

次のデータ型を返します。Returns the following data types.

式の結果Expression result の戻り値の型 :Return type
tinyinttinyint intint
smallintsmallint intint
intint intint
bigintbigint bigintbigint
decimal および numeric カテゴリ (p, s)decimal and numeric category (p, s) decimal(p, s)decimal(p, s)
money および smallmoney カテゴリmoney and smallmoney category moneymoney
float および real カテゴリfloat and real category floatfloat

注釈Remarks

ROUND は常に値を返します。ROUND always returns a value. length が負の値で、整数部の桁数より大きい場合、ROUND は 0 を返します。If length is negative and larger than the number of digits before the decimal point, ROUND returns 0.

Example 結果Result
ROUND (748.58, -4)ROUND(748.58, -4) 00

ROUND は、length が負の値であるときは、データ型に関係なく、numeric_expression を丸めて返します。ROUND returns a rounded numeric_expression, regardless of data type, when length is a negative number.

Examples 結果Result
ROUND (748.58, -1)ROUND(748.58, -1) 750.00750.00
ROUND (748.58, -2)ROUND(748.58, -2) 700.00700.00
ROUND(748.58, -3)ROUND(748.58, -3) 748.58 の既定値は decimal(5,2) となり、1000.00 を返すことができないため、結果は算術オーバーフローになります。Results in an arithmetic overflow, because 748.58 defaults to decimal(5,2), which cannot return 1000.00.
4 桁までに丸めるには、入力のデータ型を変更します。To round up to 4 digits, change the data type of the input. 次に例を示します。For example:

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

Examples

A.A. ROUND と概数を使用するUsing ROUND and estimates

次の例では、ROUND を使用することにより最後の桁が常に概数になることを表す 2 つの式を示します。The following example shows two expressions that demonstrate by using ROUND the last digit is always an estimate.

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

結果セットは次のようになります。Here is the result set.

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

B.B. ROUND を使用して概数を丸めるUsing ROUND and rounding approximations

次の例では、数値を丸めて概数化します。The following example shows rounding and approximations.

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

結果セットは次のようになります。Here is the result set.

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

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

次の例では、2 つの SELECT ステートメントを使用して、丸め処理と切り捨て処理の違いを示します。The following example uses two SELECT statements to demonstrate the difference between rounding and truncation. 最初のステートメントは、結果を丸めます。The first statement rounds the result. 2 番目のステートメントは、結果を切り捨てます。The second statement truncates the result.

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

結果セットは次のようになります。Here is the result set.

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

関連項目See Also

CEILING (Transact-SQL) CEILING (Transact-SQL)
データ型 (Transact-SQL) Data Types (Transact-SQL)
式 (Transact-SQL) Expressions (Transact-SQL)
FLOOR (Transact-SQL) FLOOR (Transact-SQL)
数学関数 (Transact-SQL)Mathematical Functions (Transact-SQL)