Oracle における切り捨ての方法です。「FLOOR関数」を使用します。
FLOOR関数で切り捨てを行う
FLOOR関数で切り捨てを行う場合の構文です。
FLOOR(数値)
これだけです。
ただし、FLOOR関数の場合、引数に小数点を含めた値を渡すと、強制的に整数のみが返って来ます。
また、引数に渡した値がマイナスの場合、マイナス方向に向かって切り捨てられます(実行例でお見せします)。
サンプル(実行例)
FLOOR関数の実行サンプルです。
--引数がプラス SELECT ' 7.89' AS 対象, FLOOR(7.89) AS 結果 UNION ALL --引数がマイナス SELECT '-1.23' AS 対象, FLOOR(-1.23) AS 結果
これを実行します。
引数がプラスの値の場合、そのまま切り捨てられています。一般的な感覚の切り捨てですね。
引数がマイナスの場合、マイナス方向に向かって切り捨てられるため、「-1.23」は「-2」という結果になります(「-1」と勘違いしやすいので注意)。
ROUND関数でも切り捨ては可能
ちなみに、ROUND関数でも切り捨ては可能です。FLOOR関数は全て整数で結果を戻しますが、ROUND関数は桁数を指定出来るので、小数点以下を指定して切り捨てることが可能です。
実行サンプルはこちら。第3引数に「1」を渡すことで切り上げされた結果が返って来ます。
--引数がプラス SELECT ' 7.89' AS 対象, ROUND(7.89, 1,1) AS 結果 UNION ALL --引数がマイナス SELECT '-1.23' AS 対象, ROUND(-1.23, 1,1) AS 結果
実行結果はこちら。
また、FLOOR関数が切り捨てた結果はマイナス方向に向かいますが、ROUND関数が切り捨てた場合はゼロ方向に向かいます。
実際に比較してみます。切り捨て対象の値をマイナスにした方が分かりやすいと思うので、マイナスの値を切り捨てます。
--FLOOR関数 SELECT '-1.23' AS 対象, FLOOR(-1.23) AS 結果 UNION ALL --ROUND関数(第2引数を0にすれば整数のみになるが今回は小数第1位までとする) SELECT '-1.23' AS 対象, ROUND(-1.23, 1,1) AS 結果
これを実行すると…
という結果になります。
参考リンク
FLOOR (Transact-SQL) - SQL Server
FLOOR (Transact-SQL)
ROUND (Transact-SQL) - SQL Server
ROUND (Transact-SQL)
関連記事
【SQL Server】四捨五入を行う(ROUND関数)
SQL Server における、四捨五入を行う方法です。ROUND関数を使います。
【SQL Server】切り上げを行う(CEILING関数)
Oracle における切り上げの方法です。「CEILING関数」を使用します。