ORACLEで数値の端数処理、数値丸めをする
数値を四捨五入する場合は、ROUND関数
数値を切り捨てる場合は、TRUNC関数
各関数の第2引数の値で、小数部、または、整数部を丸めることができる。
引数の最小値を返すCEIL関数、最大の整数を返すFLOOR関数でも求めることができる。
数値が正数の場合は、CEIL関数、負数の場合は、FLOOR関数を用いる。
四捨五入 ROUND関数
SELECT ROUND(0.4) FROM DUAL -- 0 SELECT ROUND(0.5) FROM DUAL -- 1 SELECT ROUND(0.44, 1) FROM DUAL -- 0.4 SELECT ROUND(0.45, 1) FROM DUAL -- 0.5 SELECT ROUND(4.0, -1) FROM DUAL -- 0 SELECT ROUND(5.0, -1) FROM DUAL -- 10
切り捨て TRUNC関数
SELECT TRUNC(0.1) FROM DUAL -- 0 SELECT TRUNC(0.12, 1) FROM DUAL -- 0.1 SELECT TRUNC(1.0, -1) FROM DUAL -- 0 SELECT TRUNC(12.0, -1) FROM DUAL -- 10
切り上げ
数値を切り上げる場合は、標準関数が存在しないので、
切り上げる桁数に「+9」をして切り捨て、または、切り上げる桁数に「+4」をして四捨五入をする。
SELECT TRUNC(0.12 + 0.09, 1) FROM DUAL -- 0.2 SELECT TRUNC(12.0 + 9, -1) FROM DUAL -- 20 SELECT ROUND(0.12 + 0.04, 1) FROM DUAL -- 0.2 SELECT ROUND(12.0 + 4, -1) FROM DUAL -- 20 SELECT CEIL(0.1) FROM DUAL -- 1 SELECT CEIL(-0.1) FROM DUAL -- 0 SELECT FLOOR(0.1) FROM DUAL -- 0 SELECT FLOOR(-0.1) FROM DUAL -- -1