前回は、文字列関数について説明しました。今回は、数値関数について説明します。この記事で紹介する関数でできることは「数値の四捨五入、切り捨て、切り上げ」です。
数値の計算
関数に入る前に、基本的な計算方法についてちょっと確認してみます。
SELECT
10 + 5 AS "加算",
10 - 5 AS "減算",
10 * 5 AS "乗算",
10 / 5 AS "除算",
MOD(10, 3) AS "剰余"
FROM
DUAL
加算 | 減算 | 乗算 | 除算 | 剰余 |
---|---|---|---|---|
15 | 5 | 50 | 2 | 1 |
…そういえば、余を出す剰余では MOD関数を使っていました!
MOD(除算される数値, 除算する数値)
今回の例でいくと、10 ÷ 3 をしているので 1 が返ってきてることがわかります。それでは、四捨五入ができるROUND関数、切り捨てができるTRUNC関数、切り上げができるCEIL関数、FLOOR関数をそれぞれ説明していきます。
四捨五入(ROUND)
ROUND関数は数値を四捨五入をする時に使用します。
SELECT ROUND(3.1415) AS "ROUND" FROM DUAL
ROUND |
---|
3 |
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
切り上げ | 切り捨て | 切り上げ | 切り上げ |
---|---|---|---|
6 | 5.7 | 5.75 | 5.749 |
指定した桁数の一つ右の桁が5以上の場合は切り上げられて、指定した桁数の一つ右の桁が5未満の場合は切り捨てられます。
ROUND関数で整数を四捨五入するには第2引数に負の数を指定します。
SELECT
ROUND(5748.9, -1) AS "切り上げ",
ROUND(5748.9, -2) AS "切り捨て",
ROUND(5748.9, -3) AS "切り上げ"
FROM
DUAL
切り上げ | 切り捨て | 切り上げ |
---|---|---|
5750 | 5700 | 6000 |
指定した桁数の一つ左の桁が5以上の場合は切り上げられて、指定した桁数の一つ左の桁が5未満の場合は切り捨てられます。
切り捨て(TRUNC)
TRUNC関数は数値を切り捨てる時に使用します。
SELECT TRUNC(3.1415) AS "TRUNC" FROM DUAL
TRUNC |
---|
3 |
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 |
---|---|---|
3 | 3.1 | 3.14 |
SELECT
TRUNC(3141.5, -1) AS "引数-1",
TRUNC(3141.5, -2) AS "引数-2",
TRUNC(3141.5, -3) AS "引数-3"
FROM
DUAL
引数-1 | 引数-2 | 引数-3 |
---|---|---|
3140 | 3100 | 3000 |
切り上げ(CEIL)
CEIL関数は数値を切り上げる時に使用します。
SELECT CEIL(3.1415) AS "CEIL" FROM DUAL
CEIL |
---|
4 |
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.2 | 3.15 | 3.142 |
整数も同様に指定した位で切り上げたい場合は 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の位 |
---|---|---|
3150 | 3200 | 4000 |
まとめ
数値の計算から四捨五入、切り捨て、切り上げの関数を説明してみました!DUAL表を使っていろいろ試してみてください。
コメント