SQLで小数点以下を切り捨てるにはFLOOR関数を使う
SQLで値を切り捨てて結果を取得したい場合がありますよね。
値を切り捨てを行いたい場合は「FLOOR関数」を使いましょう。
この記事では、FLOOR関数の使い方を解説します。
FLOOR関数の使い方
FLOOR関数は次のように記述して使います。
SELECT FLOOR(値);
FLOORのカッコ内に、切り捨てしたい値を記述しましょう。
では実際にSQLを操作して確認してみます。
次のテーブルを用意しました。
mysql> SELECT * FROM sample_table; +------+--------+---------+ | id | name | data | +------+--------+---------+ | 1 | Sasaki | 123.567 | | 2 | Itou | 231.445 | | 3 | Yusa | 156.729 | | 4 | Koga | 98.39 | | 5 | Minami | 226.19 | +------+--------+---------+ 5 rows in set (0.00 sec)
上記テーブルの dataカラム の数値を切り捨てて取得してみましょう。
次のように記述します。
SELECT FLOOR(data) FROM sample_table;
値を記述するカッコ内に、 dataカラム を記述します。
そうすることで、すべてのデータの dataカラム の値を切り捨てできます。
上記SQL文を実行すると、次のように結果取得できるはずです。
mysql> SELECT FLOOR(data) FROM sample_table; +-------------+ | FLOOR(data) | +-------------+ | 123 | | 231 | | 156 | | 98 | | 226 | +-------------+ 5 rows in set (0.00 sec)
ちゃんと小数点以下の値が切り捨てられています!
切り捨てる桁を指定するにはTRUNCATE関数を使う
先ほどの例で値を切り捨てる方法を確認しました。
値を切り捨てたことで小数値を整数値にできましたよね。
では、切り捨てる桁位置を調整したい場合についても確認しましょう。
FLOOR関数は「引数以下のもっとも大きな整数値を返す」ため、切り捨てる桁の指定はできません。
そのため、TRUNCATE関数を使いましょう!
TRUNCATE関数は、引数に指定した値の小数点以下を切り捨てたり、テーブル内のデータを削除できる関数です。
切り捨てる桁位置を指定するには、TRUNCATE関数内をカンマ区切りで分けて指定します。
SELECT TRUNCATE(値, 小数桁);
例えば、小数第一位で切り捨てたい場合は小数桁の部分に「1」と記述しましょう。
切り捨てる桁を指定した場合の動作も、実際に確認してみましょう。
次のように記述します。
SELECT TRUNCATE(data, 1) FROM sample_table;
上記SQL文を実行すると、次のように結果を取得できるはずです。
mysql> SELECT TRUNCATE(data, 1) FROM sample_table; +-------------------+ | TRUNCATE(data, 1) | +-------------------+ | 123.5 | | 231.4 | | 156.7 | | 98.3 | | 226.1 | +-------------------+ 5 rows in set (0.00 sec)
同じ要領で小数第二位を切り捨てたい場合は「2」を指定します。
mysql> SELECT TRUNCATE(data, 2) FROM sample_table; +-------------------+ | TRUNCATE(data, 2) | +-------------------+ | 123.56 | | 231.44 | | 156.72 | | 98.38 | | 226.19 | +-------------------+ 5 rows in set (0.00 sec)
逆に、小数桁の値をマイナスにすると一の位、十の位で切り捨てになります。
mysql> SELECT TRUNCATE(data, -1) FROM sample_table; +--------------------+ | TRUNCATE(data, -1) | +--------------------+ | 120 | | 230 | | 150 | | 90 | | 220 | +--------------------+ 5 rows in set (0.00 sec)
このように、TRUNCATE関数を使うと切り捨てたい箇所を指定可能です。
マイナス値を切り捨てる時には?
SQLで切り捨てを行う際に、マイナスの値が入ったデータを操作することもありますよね。
マイナスの値を切り捨てるときは TRUNCATE関数 を使いましょう。
なぜなら、FLOOR関数を使うと誤差が出るためです。
実際にSQLを操作して確認してみましょう。
次のように dataカラム にマイナス値を入れたデータを追加しました。
mysql> SELECT * FROM sample_table; +------+--------+---------+ | id | name | data | +------+--------+---------+ | 1 | Sasaki | 123.567 | | 2 | Itou | 231.445 | | 3 | Yusa | 156.729 | | 4 | Koga | 98.39 | | 5 | Minami | 226.19 | | 6 | Ueki | -54.12 | +------+--------+---------+ 6 rows in set (0.00 sec)
上記の状態でFLOOR関数を実行すると、次のように結果を取得できました。
mysql> SELECT FLOOR(data) FROM sample_table; +-------------+ | FLOOR(data) | +-------------+ | 123 | | 231 | | 156 | | 98 | | 226 | | -55 | +-------------+ 6 rows in set (0.00 sec)
6番目のデータが「-55」となっており、切り上げされてしまったいますよね。
このように、FLOOR関数をマイナス値に使うと切り上げされてしまうのです。
そのため、TRUNCATE関数を使って同じように実行してみましょう。
次のようにちゃんと意図した結果が返ってきます。
mysql> SELECT TRUNCATE(data, 0) FROM sample_table; +-------------------+ | TRUNCATE(data, 0) | +-------------------+ | 123 | | 231 | | 156 | | 98 | | 226 | | -54 | +-------------------+ 6 rows in set (0.00 sec)
TRUNCATE関数の第二引数に「0」を指定することで、整数で結果を取得可能です。
SQLで値を切り捨てる方法まとめ
SQLで値を切り捨てる方法について紹介しました!
値を切り捨てるには FLOOR関数 と TRUNCATE関数 が使えます。
FLOOR関数は、数値を切り捨てて整数で取得したい場合に使用可能です。
一方、TRUNCATE関数は、小数桁を指定したい場合やマイナス値を切り捨てたい場合に使いましょう!
マイナスの値を切り捨てたい場合は、TRUNCATE関数を使いましょう!