ここでは数値の端数処理(四捨五入/切り捨て/切り上げ)で使うSQL関数について紹介します。
目次
四捨五入
小数を四捨五入する(ROUND関数)
SELECT ROUND(1.5678) FROM DUAL
--結果:2
小数桁を指定して小数を四捨五入する(ROUND関数)
ROUND関数で小数を四捨五入するには第2引数に正の数を指定します。
--小数第2位を四捨五入する
SELECT ROUND(1.5678, 1) FROM DUAL
--結果:1.6
--小数第3位を四捨五入する
SELECT ROUND(1.5678, 2) FROM DUAL
--結果:1.57
--小数第4位を四捨五入する
SELECT ROUND(1.5678, 3) FROM DUAL
--結果:1.568
整数桁を指定して整数を四捨五入する(ROUND関数)
ROUND関数で整数を四捨五入するには第2引数に負の数を指定します。
--1の位を四捨五入する
SELECT ROUND(1567.8, -1) FROM DUAL
--結果:1570
--10の位を四捨五入する
SELECT ROUND(1567.8, -2) FROM DUAL
--結果:1600
--100の位を四捨五入する
SELECT ROUND(1567.8, -3) FROM DUAL
--結果:2000
切り捨て
小数を切り捨てる(TRUNC関数)
SELECT TRUNC(1.5678) FROM DUAL
--結果:1
小数桁を指定して小数を切り捨てる(TRUNC関数)
TRUNC関数で小数を切り捨てるには第2引数に正の数を指定します。
--小数第2位を切り捨てる
SELECT TRUNC(1.5678, 1) FROM DUAL
--結果:1.5
--小数第3位を切り捨てる
SELECT TRUNC(1.5678, 2) FROM DUAL
--結果:1.56
--小数第4位を切り捨てる
SELECT TRUNC(1.5678, 3) FROM DUAL
--結果:1.567
整数桁を指定して整数を切り捨てる(TRUNC関数)
TRUNC関数で整数を切り捨てるには第2引数に負の数を指定します。
--1の位を切り捨てる
SELECT TRUNC(1567.8, -1) FROM DUAL
--結果:1560
--10の位を切り捨てる
SELECT TRUNC(1567.8, -2) FROM DUAL
--結果:1500
--100の位を切り捨てる
SELECT TRUNC(1567.8, -3) FROM DUAL
--結果:1000
切り上げ
小数を切り上げる(CEIL関数、FLOOR関数)
SELECT CEIL(1.2345) FROM DUAL
--結果:2
ただし、CEIL関数に負の数を指定すると切り上げになりません。負の数はFLOOR関数を使用します。
--負の数はCEIL関数では切り上げられない
SELECT CEIL(-1.2345) FROM DUAL
--結果:-1
--負の数はFLOOR関数で切り上げらる
SELECT FLOOR(-1.2345) FROM DUAL
--結果:-2
小数桁を指定して小数を切り上げる(CEIL関数、FLOOR関数)
CEIL関数には第2引数がありません。指定した位で切り上げたい場合は CEIL(数値 * 10) / 10 のように計算して処理します。負の数はFLOOR関数を使用します。
--小数第2位を切り上げる
SELECT CEIL(1.2345 * 10) / 10 FROM DUAL
--結果:1.3
--小数第3位を切り上げる
SELECT CEIL(1.2345 * 100) / 100 FROM DUAL
--結果:1.24
--小数第4位を切り上げる
SELECT CEIL(1.2345 * 1000) / 1000 FROM DUAL
--結果:1.235
整数桁を指定して整数を切り上げる(CEIL関数、FLOOR関数)
CEIL関数には第2引数がありません。指定した位で切り上げたい場合は CEIL(数値 / 10) * 10 のように計算して処理します。負の数はFLOOR関数を使用します。
--1の位を切り上げる
SELECT CEIL(1234.5 / 10) * 10 FROM DUAL
--結果:1240
--10の位を切り上げる
SELECT CEIL(1234.5 / 100) * 100 FROM DUAL
--結果:1300
--100の位を切り上げる
SELECT CEIL(1234.5 / 1000) * 1000 FROM DUAL
--結果:2000
以上、数値の端数処理(四捨五入/切り捨て/切り上げ)で使うSQL関数について解説しました。