Oracleで数値の切り上げをしよう
Oracleの関数で、数値の丸めについて調べていてふと気になったのですが、四捨五入(ROUND)と切り捨て(TRUNC)はあるのに、切り上げって無いんですね。
ちなみに、ROUND と TRUNC の動作は以下のようになります。
ROUND(number) | numberの小数点以下を四捨五入する |
ROUND(number, integer) | numberの小数点integer桁目の次の桁で四捨五入し、 小数点integer桁までの数値にする |
TRUNC(number) | numberの小数点以下を切り捨てる |
TRUNC(number, integer) | numberの小数点integer桁目の次の桁以下を切り捨て、 小数点integer桁までの数値にする |
さて、じゃあ切り上げはどうするの? というところなんですが、操作対象の桁に4を足して四捨五入したり、9を足して切り捨てれば何とかなりそうです。
例えば、ROUND(number+0.4) とか、TRUNC(number+0.9) とすれば良さそうですよね。
うん、いい感じ。
また小数点第何位とかを求める時には、ROUND(1.234 + 0.004, 2) とかすれば出来ます。
頻繁に使う場合は関数を作っておくと、何かと便利そうです。幸いWeb上に関数のソースを公開されている方を見つけることが出来たので、僕は素直に使わせてもらうことにします。
参照リンク
・ORACLE SQL 四捨五入・切り上げ・切り捨てをする - ROUND、TRUNC、ROUNDUP 関数 | saka-en
(切り上げの関数ROUNDUPのソースを公開しておられます)