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のみ対応 | ||||||||||||
日付 書式 |
※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 /* 正数を取得したい場合 */
;
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 /* まるめを指定して切り上げる */
;