記事内に広告が含まれています。

【Oracle】切り捨てを行う(TRUNC関数・FLOOR関数)

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関数」を使用します。読み方は「シール」。天井を張るという意味です。