2017/12/07

ORACLEには端数処理関数がいくつかあります。似た機能の関数もあります。正しく使い分けられていますか?
sponsored link
TRUNC・ROUND
TRUNCは、端数の切捨てを行う関数です。
ROUNDは、端数を四捨五入を行う関数です。(銀行丸めではないので注意)
CEIL・FLOOR
CEILは、端数の切上げを行う関数です。負数の場合に注意、大きい方へ丸めます。
FLOORは、端数の切捨てを行う関数です。負数の場合に注意、小さい方へ丸めます。
TRUNC・ROUNDとCEIL・FLOORの違い
違いの1点目は、TRUNCとROUNDは、指定した桁位置で端数処理をすることが出来るのに対し、CEIL・FLOORは整数に丸めることしかできない点です。
TRUNCとROUNDの桁位置の指定は、2番目の引数で行います。0は整数に(デフォルト)、1は小数点以下1位に、-1は整数10の位に丸めることを意味します。
違いの2点目は、TRUNCとFLOORの違いです。指定した桁で丸められか否かという点以外に、負数の場合の扱いが異なります。
TRUNCは、指定した値を0に近い方へ丸めます。
FLOORは、指定した値を小さい方へ丸めます。
負数の場合のTRUNCとFLOORの違いやCEILの挙動は、特に注意が必要です。
まとめ
端数処理は金額等の重要な項目で使用することも多く、重い障害につながる可能性があります。
ぜひ覚えておきましょう。
関連