MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

【MySQL】FLOOR()関数を使って小数部分が整数(.00)のレコードだけを抽出する方法

DECIMAL型のカラムから「55.00」や「9.00」のように小数部分が0(整数値と等しい)レコードだけを取り出したい場合、FLOOR()関数を使うと簡単に実現できます。

FLOOR()関数による抽出の考え方

FLOOR()は引数の値を切り捨てて整数にする関数です。元の値とFLOOR()した値が一致していれば、その値は小数部分を持たない(小数点以下が0の)数値だと判断できます。たとえば、5.23、8.76、12.00、22.68といったレコードの中から、12.00のようなレコードのみを抽出するイメージです。

1. テーブルを作成する

まず、検証用のテーブルを作成します。

mysql> create table DemoTable
(
    Value DECIMAL(4,2)
);
Query OK, 0 rows affected (0.53 sec)

2. レコードを挿入する

INSERTコマンドでいくつかのデータを登録します。小数部分があるデータとないデータを混ぜて用意しています。

mysql> insert into DemoTable values(54.20);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(55.0);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values(7.8);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(9.0);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(9.2);
Query OK, 1 row affected (0.21 sec)

3. 登録されたデータを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は次のとおりです。

+-------+
| Value |
+-------+
| 54.20 |
| 55.00 |
|  7.80 |
|  9.00 |
|  9.20 |
+-------+
5 rows in set (0.00 sec)

4. 小数部分が0のレコードを抽出する

以下が、値が整数と一致するレコードのみを取得するクエリです。「Value = FLOOR(Value)」という条件をWHERE句に指定します。

mysql> select *from DemoTable where Value=floor(Value);

実行すると、小数部分が0のレコードだけが出力されます。

+-------+
| Value |
+-------+
| 55.00 |
|  9.00 |
+-------+
2 rows in set (0.02 sec)

補足:CEILING()やTRUNCATE()でも代用可能

切り捨てを行うFLOOR()以外にも、TRUNCATE(Value, 0)(小数点以下を切り捨て)やCEILING()(切り上げ)と比較する方法でも同様の結果が得られます。負の値が含まれる可能性がある場合は、FLOOR()がより直感的に動作するためおすすめです。


  1. MySQLで通貨形式を表示する方法:FORMAT()関数の使い方を解説

    MySQLで通貨形式を設定する方法MySQLでは、FORMAT()関数を使うことで、数値データを通貨として見やすい形式に整形して表示できます。この記事では、実際にテーブルを作成し、金額データを「USD 90,948,484.00」のような通貨表記へ変換する手順を、サンプルコード付きでわかりやすく解説します。1. サンプルテーブルを作成するまず、金額を格納するためのテーブルを作成します。ここでは、小数点以下4桁まで保持できるDECIMAL型を使用します。mysql> create table DemoTable    -> ( &nb

  2. MySQLで月の範囲を指定してレコードを取得する方法

    MySQLでは、YEAR()関数とMONTH()関数、さらにBETWEEN演算子を組み合わせることで、特定の月の範囲に該当するレコードを簡単に抽出できます。ここでは、前年の7月〜12月と当年の1月〜7月というように、年をまたいだ月の範囲でデータを取得する方法を解説します。 サンプルテーブルの作成 まず、テーブルを作成します。 mysql> create table DemoTable1795      (      Name varchar(20),      DueDate date