Oracle における切り捨ての方法です。「TRUNC関数」「FLOOR関数」の2種類が存在します。
TRUNC関数で切り捨てを行う
TRUNC関数で切り捨てを行う場合の構文です。
TRUNC(数値) TRUNC(数値, 小数点以下の桁数)
これだけです。
- 第1引数:切り捨てしたい数値
- 第2引数:小数点以下で切り捨てしたい桁数(省略すると、小数点以下は全て切り捨て)
小数点以下が不要という場合は、第1引数のみを指定して下さい。
サンプル(TRUNC関数の実行例)
TRUNC関数の実行サンプルです。
--小数点以下を全て切り捨て SELECT '123.45' AS 対象, TRUNC(123.45) AS 結果 FROM dual UNION ALL --小数点第2位以下を斬り捨て(小数点第1位を残す) SELECT '123.45' AS 対象, TRUNC(123.45,1) AS 結果 FROM dual;
これを実行すると、以下になります。
第1引数のみだと整数のみが残り、第2引数を指定すると指定した値の小数点の位が残ります(実行例では第2引数に「1」を指定しているので、小数点第1位が残される)。
FLOOR関数で切り捨てを行う
FLOOR関数でも切り捨てを行うことが可能です。構文は以下。
FLOOR(数値)
ただし、引数に小数を渡すと、小数点以下が切り捨てられて、整数のみが返って来ます。
サンプル(FLOOR関数の実行例)
FLOOR関数の実行サンプルです。
SELECT '123.456' AS 対象, FLOOR(123.456) AS 結果 FROM dual;
実行結果は以下。
見事に小数点以下が切り捨てられています。
TRUNC関数とFLOOR関数の違いは?
TRUNC関数とFLOOR関数は、どちらも数値を切り捨てるための関数ですが、先ほど紹介した通り、引数が異なることと、動作が違います。
TRUNC関数は、切り捨ての際に中間の値に対してはゼロ方向に丸めますが、FLOOR関数は常にマイナスの無限大に向かって切り捨てます。
実際にSQLを実行してみます。
--TRUNC(正の小数) SELECT ' 0.5' AS 対象, TRUNC(0.5) AS 結果 FROM dual UNION ALL --TRUNC(負の小数) SELECT '-0.5' AS 対象, TRUNC(-0.5) AS 結果 FROM dual UNION ALL --FLOOR(正の小数) SELECT ' 0.5' AS 対象, FLOOR(0.5) AS 結果 FROM dual UNION ALL --FLOOR(負の小数) SELECT '-0.5' AS 対象, FLOOR(-0.5) AS 結果 FROM dual;
実行結果は以下。
「FLOOR(-0.5)」の場合、切り捨て時にマイナスの方向に丸めているため、「-1」という結果になっています。
参考リンク
TRUNC(数値)
FLOOR
関連記事
【Oracle】四捨五入を行う(ROUND関数)
Oracle における、四捨五入を行う方法です。ROUND関数を使います。
【Oracle】切り上げを行う(CEIL関数)
Oracle における切り上げの方法です。「CEIL関数」を使用します。読み方は「シール」。天井を張るという意味です。