【Oracle】数値関数を使ってみよう!

Oracle

前回は、文字列関数について説明しました。今回は、数値関数について説明します。この記事で紹介する関数でできることは数値の四捨五入、切り捨て、切り上げです。

数値の計算

関数に入る前に、基本的な計算方法についてちょっと確認してみます。

SELECT
  10 + 5 AS "加算",
  10 - 5 AS "減算",
  10 * 5 AS "乗算",
  10 / 5 AS "除算",
  MOD(10, 3) AS "剰余"
FROM
  DUAL
加算減算乗算除算剰余
1555021
算術演算子:四則演算(加算、減算、乗算、除算)+ α

…そういえば、余を出す剰余では MOD関数を使っていました!

MOD(除算される数値, 除算する数値)

今回の例でいくと、10 ÷ 3 をしているので 1 が返ってきてることがわかります。それでは、四捨五入ができるROUND関数、切り捨てができるTRUNC関数、切り上げができるCEIL関数、FLOOR関数をそれぞれ説明していきます。

四捨五入(ROUND)

ROUND関数は数値を四捨五入をする時に使用します。

SELECT ROUND(3.1415) AS "ROUND" FROM DUAL
ROUND
3
ROUND関数で円周率を四捨五入

ROUND関数で小数を四捨五入するには第2引数に正の数を指定します。

SELECT
  ROUND(5.7489, 0) AS "切り上げ",
  ROUND(5.7489, 1) AS "切り捨て",
  ROUND(5.7489, 2) AS "切り上げ",
  ROUND(5.7489, 3) AS "切り上げ"
FROM
  DUAL
切り上げ切り捨て切り上げ切り上げ
65.75.755.749
引数が0の場合、5.7の7をみて切り上げている。引数が1の場合、5.74の4をみて切り捨てられている。

指定した桁数の一つ右の桁が5以上の場合は切り上げられて、指定した桁数の一つ右の桁が5未満の場合は切り捨てられます。

ROUND関数で整数を四捨五入するには第2引数に負の数を指定します。

SELECT
  ROUND(5748.9, -1) AS "切り上げ",
  ROUND(5748.9, -2) AS "切り捨て",
  ROUND(5748.9, -3) AS "切り上げ"
FROM
  DUAL
切り上げ切り捨て切り上げ
575057006000
引数が-1の場合、8をみて切り上げている。引数が-2の場合、4をみて切り捨てられている。

指定した桁数の一つ左の桁が5以上の場合は切り上げられて、指定した桁数の一つ左の桁が5未満の場合は切り捨てられます。

切り捨て(TRUNC)

TRUNC関数は数値を切り捨てる時に使用します。

SELECT TRUNC(3.1415) AS "TRUNC" FROM DUAL
TRUNC
3
TRUNC関数で小数の切り捨て

ROUND関数と同じで、引数に正の数を指定することで小数を切り捨てることができ、引数に負の数を指定することで整数を切り捨てることができます。

SELECT
  TRUNC(3.1415, 0) AS "引数0",
  TRUNC(3.1415, 1) AS "引数1",
  TRUNC(3.1415, 2) AS "引数2"
FROM
  DUAL
引数0引数1引数2
33.13.14
TRUNC関数で小数桁を指定し切り捨て
SELECT
  TRUNC(3141.5, -1) AS "引数-1",
  TRUNC(3141.5, -2) AS "引数-2",
  TRUNC(3141.5, -3) AS "引数-3"
FROM
  DUAL
引数-1引数-2引数-3
314031003000
TRUNC関数で正数桁を指定し切り捨て

切り上げ(CEIL)

CEIL関数は数値を切り上げる時に使用します。

SELECT CEIL(3.1415) AS "CEIL" FROM DUAL
CEIL
4
CEIL関数で小数の切り上げ

CEIL関数にはROUND関数やTRUNC関数と違い第2引数がありません。

指定した位で切り上げたい場合は CEIL(数値 * 10) / 10 のように計算。

SELECT
    CEIL(3.1415 * 10) / 10 AS "小数第2位",
    CEIL(3.1415 * 100) / 100 AS "小数第3位",
    CEIL(3.1415 * 1000) / 1000 AS "小数第4位"
FROM
  DUAL
小数第2位小数第3位小数第4位
3.23.153.142
CEIL関数を使い指定した小数の位を切り上げ

整数も同様に指定した位で切り上げたい場合は  CEIL(数値 / 10) * 10  のように計算。

SELECT
    CEIL(3141.5 / 10) * 10 AS "1の位",
    CEIL(3141.5 / 100) * 100 AS "10の位",
    CEIL(3141.5 / 1000) * 1000 AS "100の位"
FROM
  DUAL
1の位10の位100の位
315032004000
CEIL関数を使い指定した正数の位を切り上げ

まとめ

数値の計算から四捨五入、切り捨て、切り上げの関数を説明してみました!DUAL表を使っていろいろ試してみてください。

コメント

タイトルとURLをコピーしました