目次
SQL Serverでは、数値計算や丸め処理を効率的に行うための数値関数が多数用意されています。
本記事では、ROUND, CEILING, FLOOR を中心に、実務で役立つ関数をサンプル付きで解説します。
SQL Serverの数値関数の基本|数値操作を効率化する方法
ROUND関数(四捨五入)
ROUNDは数値を指定桁数で四捨五入します。
SELECT ROUND(123.456, 2); -- 123.46
SELECT ROUND(123.456, -1); -- 120
注意:SQL ServerのROUNDは「銀行丸め」ではなく通常の四捨五入です。
CEILING関数(切り上げ)
CEILINGは数値を切り上げます。
SELECT CEILING(123.45); -- 124
SELECT CEILING(-123.45); -- -123
マイナス値を切り上げる場合、0に近づく方向で動作する点がポイントです。
FLOOR関数(切り捨て)
FLOORは数値を切り捨てます。
SELECT FLOOR(123.45); -- 123
SELECT FLOOR(-123.45); -- -124
マイナス値を切り捨てると、より小さい方向に動くため注意。
ABS関数(絶対値)
ABSは絶対値を返します。
SELECT ABS(-123); -- 123
POWER・SQRT関数(べき乗・平方根)
POWERは累乗、SQRTは平方根を返します。
SELECT POWER(2, 3); -- 8
SELECT SQRT(16); -- 4
その他の数値関数(SIGN, RAND, EXP, LOGなど)
- SIGN():符号を返す(負: -1, 0: 0, 正: 1)。
- RAND():0〜1の乱数を返す。シード値を指定すると再現可能。
- EXP():自然対数の底 e の累乗。
- LOG():自然対数。
- LOG10():常用対数(SQL Server 2008以降)。
SELECT SIGN(-10); -- -1
SELECT RAND(); -- 0.123...
SELECT RAND(100); -- 固定シードで再現性あり
SELECT EXP(1); -- e ≈ 2.718...
SELECT LOG(10); -- 自然対数
SELECT LOG10(1000); -- 3
数値関数の注意点と実務活用
数値関数は便利ですが、集計や大規模データに多用するとCPU負荷が高まります。
ROUNDの桁指定やRANDの乱数利用は特にパフォーマンスに注意してください。
他RDBとの比較(MySQL・PostgreSQL・Oracle)
- Oracleには TRUNC(小数切り捨て)が存在。SQL ServerはFLOORで代用。
- PostgreSQLの RANDOM() は行ごとに異なる値を返す。SQL ServerのRANDは同一SELECT内で同じ値を返す点が違う。
- MySQLのROUNDはオプションで「銀行丸め」を選べる。SQL Serverは通常の四捨五入のみ。
補足:数値関数のバージョン差
数値関数の多くは古いバージョンから利用可能ですが、一部に差分があります。
- LOG10():SQL Server 2008以降で追加。
- RAND():SQL Server 2012以降でシード指定時の挙動が安定化。
まとめ
SQL Serverの数値関数は、丸め処理(ROUND)、切り上げ(CEILING)、切り捨て(FLOOR)、絶対値(ABS)が基本です。
さらにPOWER・SQRT・LOGなどを理解しておくと数値計算の幅が広がります。
バージョン差はほぼありませんが、LOG10とRANDの挙動は知っておくと安心です。
SQL Server学習シリーズ

0 件のコメント:
コメントを投稿