【SQL】 切り捨てと切り下げの違いについての話

アイキャッチ画像算術関数
この記事は約3分で読めます。
スポンサーリンク

【SQL】 切り捨てと切り下げの違い

「切捨て」については、義務教育で学んだ経験をお持ちの方がほとんどであると思われますが、「切り下げ」って意外と知らない方が多いのではないでしょうか?マイナスの値を端数処理するときには、特に注意が必要で、予期せぬ結果を招くことがありますので、違いについてマスターしましょう。

切り捨てと切り下げの定義

  1. 切捨て

    切り捨てとは、「求める位に満たない端数を無視すること

  2. 切り下げ

    切り下げとは、常に数値が小さくなるほうに向かって端数を処理すること

切り捨てと切り下げで使用する関数

切捨て切り下げ
ORACLETRUNC関数FLOOR関数
MS-SQL ServerFLOOR関数
MS-AccessFIX関数INT関数

※MS-AccessのINT及びFIX関数については、整数部分を返す関数となります。
よって、小数点以下を端数処理したい場合は、元の値×100をINTした後に÷100する等の工夫が必要です。
MS-SQL Server には切り捨ての関数は、準備されていないため
ROUND関数を使いましょう。
ROUND関数の第3引数に1を指定することで、切捨てとなります

Oracle・Postgres・MySQL のROUND関数には、第3引数はありません。

切り捨てと切り下げの具体例

言葉では、非常にわかりにくいですので、具体例でみていきましょう。

ORACLE
SQL文
SELECT TRUNC(1.5), TRUNC(-1.5), FLOOR(1.5), FLOOR(-1.5)FROM DUAL;

実行結果

TRUNC(1.5)TRUNC(-1.5)FLOOR(1.5)FLOOR(-1.5)
1-11-2
MS-SQL Server
SQL文
SELECT ROUND(1.5,0,1), ROUND(-1.5,0,1), FLOOR(1.5), FLOOR(-1.5);
 

実行結果

ROUND(1.5,0,1)ROUND(-1.5,0,1)FLOOR(1.5)FLOOR(-1.5)
1-11-2
MS-Access
SQL文
SELECT FIX(1.5) AS A, FIX(-1.5) AS B, INT(1.5) AS C, INT(-1.5) AS D;
 

実行結果

ABCD
1-11-2

関連リンク

【SQL】 ROUND関数(四捨五入)の使い方
ROUND関数は、指定された長さ、または有効桁数に、四捨五入で数値を丸める関数です。オラクルとSQL Serverでは処理が違うため、それぞれで解説しています。いちれべ.comは、オラクル、MS-SQL、MS-Access で使用可能か一目でわかるサイトです。
【SQL・ORACLE】 TRUNC関数の使い方(切り捨て)
TRUNC関数は、指定された桁数以下を切り捨てる関数です。ROUND関数では四捨五入を行いましたが、TRUNC関数では切り捨てを行います。オラクルで使用できます。いちれべ.comは、オラクル、MS-SQL、MS-Access で使用可能か一目でわかるサイトです。
【SQL】 FLOOR関数の使い方(切り下げ)
FLOOR関数は、引数で指定した数値を切り下げて整数を求める関数です。引数で与えた数値より小さく、最も近い整数を求めます。負の数値を与えると、負側の最も近い整数を返します。オラクルとSQL Serverともに使用できます。
【SQL・ORACLE】 CEIL関数(切り上げ)の使い方
CEIL関数は、引数で指定した数値を切り上げて整数を求める関数です。CEIL関数は、オラクルで使用できます。MS-SQL Serverでは、CEILING関数で同様の処理を実現できます。いちれべ.comは、オラクル、MS-SQL、MS-Access で使用可能か一目でわかるサイトです。
【SQL】 CEILING関数(切り上げ)の使い方
CEILING関数は、引数で与えた数値を切り上げて、整数を求める関数です。CEILING関数は、MS-SQL Serverで使用できます。ORACLEでは、CEIL関数で同様の処理が実現可能です。いちれべ.comは、オラクル、MS-SQL、MS-Access で使用可能か一目でわかるサイトです。
関数一覧ページ
SQLリファレンス > 関数
ORACLE、MS-SQL Server、MS-Access、MySQLで使用する関数の一覧表です。いちれべ.comは、オラクル、MS-SQL Server、MS-Access で使用可能か一目でわかるのが特徴のSEサポートサイトです。
タイトルとURLをコピーしました