SQL道場 算術関数 ROUND関数

SQLで小数点を含む値を丸める(四捨五入)ROUND関数について記載しています。

対応データベースSQL Server MySQL Oracle PostgreSQL DB2 SQLite Access

ROUND関数の文法

SELECT ROUND(数値, 桁数) FROM テーブル
SELECT ROUND(数値, 桁数, まるめ) FROM テーブル
SELECT ROUND(日付, 日付書式) FROM テーブル

引数数値数値型 数値(任意の数)
桁数整数型 数値(SQL Server,DB2は必須)
まるめ

0はまるめ、それ以外は切り捨て

※SQLServerのみ対応

日付

丸める位置を書式モデルで指定する。

※Oracleのみ対応

日付 書式
書式説明
YEAR年(7月1日以降は翌年に切り上げ)
MONTH月(16日以降は翌月に切り上げ)
DD
HH
MM

※Oracleのみ対応

返値数値型 まるめた値

ROUND関数は指定された値をまとめます。桁数に正の値を指定した場合は小数点以下の桁数を有効にして丸めます。Oracle,MySQL、PostgreSQLでは桁数を省略した場合、小数点以下を四捨五入をして丸めます。SQLServer、DB2では桁数の指定は必須です。SQLServerでは丸めか切り捨てを指定することができます。Oracleでは日付を丸めることもできます。

正数の切り上げと切り捨てについては、CEIL/CEILINGやFLOORを使用します。

実行例

MySQLの実行例

/* MySQL 四捨五入のサンプル */
SELECT 
	ROUND(1.6) as ROUND_value1  /* 正数を取得したい場合 */
	,ROUND(1.453,1) as ROUND_value2  /* 少数第1位を取得したい場合 */
	,ROUND(1.533,2) as ROUND_value3 /* 少数第2位を取得したい場合 */
	,ROUND(1.533,0) as ROUND_value4 /* 正数を取得したい場合 */
;
MySQL ROUND関数実行サンプル

SQLServerの実行例

/* SQLServer 四捨五入のサンプル */
SELECT 
	ROUND(1.453,1) as ROUND_value2  /* 少数第1位を取得したい場合 */
	,ROUND(1.533,2) as ROUND_value3 /* 少数第2位を取得したい場合 */
	,ROUND(1.533,0) as ROUND_value4 /* 正数を取得したい場合 */
 ,ROUND(1.533,0,1) as ROUND_value5 /* まるめを指定して切り捨てする */
 ,ROUND(1.4533,0,0) as ROUND_value6 /* まるめを指定して切り上げる */
;
SQLServer ROUND関数実行サンプル