T-SQL: 切り上げ・切り捨て・四捨五入

値の切り上げ・切り捨て・四捨五入

値を切り上げ・切り捨て・四捨五入して小数点第何位までにしたいという時ありますよね。

今回はそんな時に便利なファンクションをご紹介します。


切り上げ・切り捨て・四捨五入に使えるファンクション

整数への切り上げと切り捨てには、それぞれ CEILINGFLOOR、四捨五入には ROUND を使うことができます。

CEILINGFLOOR はパラメターをひとつだけ受け取って、整数に切り上げ・切り捨てしてくれるファンクションです。


ROUND は 以下の定義でパラメターを 3 つ受け取ります。

ROUND ( numeric_expression , length [ ,function ] )

* numeric_expression: 数値

* length: 数値を丸める際の有効桁数 (-2 であれば 100 の位、-1 であれば 10 の位、 0 が 1 の位、1 が小数点第一位、2 が小数点第二位、、、のように続きます)
[ 例 ]
SELECT ROUND(1234.1234, -3); --> 1000.0000
SELECT ROUND(1234.1234, -2); --> 1200.0000
SELECT ROUND(1234.1234, -1); --> 1230.0000
SELECT ROUND(1234.1234, 0); --> 1234.0000
SELECT ROUND(1234.1234, 1); --> 1234.1000
SELECT ROUND(1234.1234, 2); --> 1234.1200
SELECT ROUND(1234.1234, 3); --> 1234.1230

* function: 0 - 四捨五入、0 以外- 切捨て。 オプショナルでデフォルトは 0 です。

整数(1の位)に切り上げ・切り捨て・四捨五入

もし、値を整数(1の位)に切り上げ・切り捨て・四捨五入したいのであればシンプルです。

切り捨ては ROUND の第 3 パラメターに 0 以外を指定しても OK です。

[ 例 ]
■ 切り上げ
SELECT CEILING(1234.1234); --> 1235
SELECT CEILING(1234.5678); --> 1235

■ 切り捨て
SELECT FLOOR(1234.1234); --> 1234
SELECT FLOOR(1234.5678); --> 1234
SELECT ROUND(1234.5678, 0, 1); --> 1234.0000

■ 四捨五入
SELECT ROUND(1234.1234, 0); --> 1234.0000
SELECT ROUND(1234.5678, 0); --> 1235.0000


小数点第二位に切り上げ・切り捨て・四捨五入

小数点第二位への切り捨てと四捨五入であれば、 ROUND を使うと簡単です。
(第 3 パラメターは 0 以外であれば、1 じゃなくても大丈夫です。)

[ 例 ]
■ 切り捨て
SELECT ROUND(1234.1234, 2, 1); --> 1234.1200
SELECT ROUND(1234.5678, 2, 1); --> 1234.5600

■ 四捨五入
SELECT ROUND(1234.1234, 2); --> 1234.1200
SELECT ROUND(1234.5678, 2); --> 1234.5700


切り上げだけは、オプションが用意されていないので、少し計算する必要があります。
いろいろやり方があるかもしれませんが、 一度整数にして、CEILING を使って、あとで戻してあげるのが簡単かもしれません。

■ 切り上げ
SELECT CEILING(1234.1234 * 100) / 100 --> 1234.130000
SELECT CEILING(1234.5678 * 100) / 100 --> 1234.570000


© 2010-2024 SQL Server 入門