T-SQL: 切り上げ・切り捨て・四捨五入
値の切り上げ・切り捨て・四捨五入
値を切り上げ・切り捨て・四捨五入して小数点第何位までにしたいという時ありますよね。
今回はそんな時に便利なファンクションをご紹介します。
切り上げ・切り捨て・四捨五入に使えるファンクション
整数への切り上げと切り捨てには、それぞれ CEILING と FLOOR、四捨五入には ROUND を使うことができます。
CEILING と FLOOR はパラメターをひとつだけ受け取って、整数に切り上げ・切り捨てしてくれるファンクションです。
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