Oracle における、四捨五入を行う方法です。ROUND関数を使います。
四捨五入
ROUND関数を使って四捨五入する方法は以下。
ROUND(数値) ROUND(数値, 小数点以下の桁数)
たったこれだけです。
- 第1引数:四捨五入したい数値
- 第2引数:小数点以下で四捨五入したい桁数(省略すると、整数に丸められる)
第2引数は省略可能ですが、第2引数を指定しない場合、整数に丸められます。
サンプル(実行例)
ROUND関数のサンプルです。
第2引数を指定しないパターン。
SELECT '123' AS 対象, ROUND(123) AS 結果 FROM dual UNION ALL SELECT '123.4' AS 対象, ROUND(123.4) AS 結果 FROM dual UNION ALL SELECT '123.5' AS 対象, ROUND(123.5) AS 結果 FROM dual UNION ALL SELECT '123.6' AS 対象, ROUND(123.6) AS 結果 FROM dual;
これを実行すると、小数点以下の値に関わらず、全て整数に丸められます。
次に第2引数を指定したパターン。第1引数を小数第2位までの値とし、小数第1位を四捨五入の対象に指定します。
SELECT '123.14' AS 対象, ROUND(123.14,1) AS 結果 FROM dual UNION ALL SELECT '123.15' AS 対象, ROUND(123.15,1) AS 結果 FROM dual UNION ALL SELECT '123.16' AS 対象, ROUND(123.16,1) AS 結果 FROM dual;
これを実行すると以下となります。
結果を見て頂ければ分かると思いますが、四捨五入出来ています。
第2引数にマイナスを指定したパターン。小数点より左側の桁数(整数)に丸められます。
--整数1の位を丸める SELECT '89' AS 対象,ROUND(89,-1) AS 結果 FROM dual UNION ALL --整数10の位を丸める SELECT '89' AS 対象,ROUND(89,-2) AS 結果 FROM dual UNION ALL --整数100の位を丸める SELECT '151' AS 対象,ROUND(500,-3) AS 結果 FROM dual;
実行すると以下となります。
極端な例ですが、500を3桁以上で丸めると、1000になります。
エラーコード
ROUND関数使用時のエラーコード例を紹介します。
- ORA-00936:式がありません(カンマあるけど引数を渡してない)
- ORA-00938:関数の引数が不足しています(そもそも引数を渡してない)
- ORA-00939:関数の引数が多すぎます(第3引数まで渡してる)
- ORA-01722:数値が無効です(数値以外の値を渡している。ただし、文字列でも数値に暗黙変換可能な場合はエラー発生せず)
- PLS-00306:’ROUND’の呼出しで、引数の数または型が正しくありません(引数の数が多い)
- ORA-06502:PL/SQL:数値または値のエラー:文字から数値への変換エラーが発生しました(文字列渡している。ただし、文字列でも数値に暗黙変換可能な場合はエラー発生せず)
参考リンク
Round
関連記事
【Oracle】切り捨てを行う(TRUNC関数・FLOOR関数)
Oracle における切り捨ての方法です。「TRUNC関数」「FLOOR関数」の2種類が存在します。
【Oracle】切り上げを行う(CEIL関数)
Oracle における切り上げの方法です。「CEIL関数」を使用します。読み方は「シール」。天井を張るという意味です。