ORACLE SQL 四捨五入・切り上げ・切り捨てをする - ROUND、TRUNC、ROUNDUP 関数 ホームページ制作 | 墨田区

ORACLE SQL 四捨五入・切り上げ・切り捨てをする – ROUND、TRUNC、ROUNDUP 関数

LINEで送る
Pocket

ORACLE SQL で、数値を四捨五入・切り上げ・切り捨てをする方法をご紹介します。
実務では、外貨などを扱う場合や、消費税の計算など、いろいろな場面で大変よく使いますよね。
数値の四捨五入、切り捨てをする場合は、ROUND 関数、または、TRUNC 関数を使用します。
切り上げについては、ORACLE SQL では、標準の関数が用意されていません。独自の関数を作成し、対応します。
※数字の端数を切り捨てる事を「丸める」といいます。




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


利用関数

関数処理利用方法
ROUND 四捨五入ROUND( 数値 ,[小数桁] )
TRUNC切り捨てTRUNC( 数値 ,[小数桁] )
ROUNDUP切り上げROUNDUP( 数値 ,[小数桁] )
引数の [小数桁] には、負の値を指定することも可能です。負の値を [少数桁] に指定すると、整数部が四捨五入・切り捨て・切り上げされます。

使い方

使い方はとても簡単です。以下の要領でSQLを実行してください。

小数点第 1 位で四捨五入する

SELECT
 ROUND(12345.678)
FROM DUAL
Return : 12346

小数点第 2 位で四捨五入する

SELECT
 ROUND(12345.678,1)
FROM DUAL
Return : 12345.7

整数部 1 桁目を四捨五入する

SELECT
 ROUND(12345.678,-1)
FROM DUAL
Return : 12350


小数点第 1 位で切り捨てする

SELECT
 TRUNC(12345.678)
FROM DUAL
Return : 12345


小数点第 2 位で切り捨てする

SELECT
 TRUNC(12345.678)
FROM DUAL
Return : 12345.6

整数部 2 桁目を切り捨てする

SELECT
 TRUNC(12345.678,-1)
FROM DUAL
Return : 12340

切り上げについては、ORACLE SQL では、標準の関数が用意されていません。独自の関数を作成し、対応します。

切り上げの関数

/**
 * 小数点以下もしくは整数部を切り上げします。
 * 
 * @param: in_num   数値
 * @param: [in_digit] 小数値、負の値を指定すると整数部を切り上げします。
 * @return: 切り上げした数値
 * 
 * @samples:
 *  SELECT ROUNDUP(123.456) FROM DUAL    --> 124
 *  SELECT ROUNDUP(123.456,1) FROM DUAL  --> 123.5
 *  SELECT ROUNDUP(123.456,-1) FROM DUAL --> 130
 * @author saka-en, http://www.saka-en.com
 * @version 1.0
 * @license The MIT License
 */
CREATE OR REPLACE FUNCTION ROUNDUP (
    in_num      IN    NUMBER,         -- 数値
    in_digit    IN    INTEGER := 0    -- 小数桁
) RETURN NUMBER
IS
    wk_value    NUMBER;
BEGIN
    IF in_num IS NULL THEN
        RETURN NULL;
    END IF;
    IF in_num = 0 THEN
        RETURN 0;
    END IF;
    wk_value := NVL(10 ** in_digit,1);
    RETURN CEIL(ABS(in_num) * wk_value) / wk_value * SIGN(in_num);

EXCEPTION
    WHEN OTHERS THEN
        RETURN NULL;
END ROUNDUP;
/
ORACLE 11g で検証し、Excel の ROUNDUP 関数との比較テストを実施しました。

小数点第 1 位で切り上げする

SELECT
 ROUNDUP(123.456)
FROM DUAL
Return : 124

小数点第 2 位で切り上げする

SELECT
 ROUNDUP(123.456,1)
FROM DUAL
Return : 123.5

整数部 2 桁目を切り上げする

SELECT
 ROUNDUP(123.456,-1)
FROM DUAL
Return : 130

ソース

ソースは こちら からダウンロードができます。
[注]本ツールの利用やソースの変更は自由ですが、こちらでは一切の保障ができませんので、自己責任にてお願い致します。

おつかれさまでした。

LINEで送る
Pocket

この記事がお役に立ちましたら シェア をお願いいたします。

コメントを残す

お名前 (必須)
メールアドレス
(アドレスは公開されません)

コメント(必須)

Trackback URL