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

MySQLで列の値から浮動小数点数のみを抽出する方法

この記事では、MySQLのテーブルに格納された列の値の中から、整数ではなく浮動小数点数(小数部分を持つ値)のみを抽出する方法を解説します。ポイントは FLOOR() 関数との比較です。

サンプルテーブルの作成

まず、DECIMAL 型のカラムを持つテーブルを作成します。

mysql> create table DemoTable628 (Value DECIMAL(10,2));
Query OK, 0 rows affected (0.52 sec)

レコードの挿入

次に、INSERT コマンドを使っていくつかのレコードを挿入します。意図的に「12.00」という整数値も含めておきます。

mysql> insert into DemoTable628 values(10.97);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable628 values(20.04);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable628 values(12.00);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable628 values(89.56);
Query OK, 1 row affected (0.20 sec)

テーブル内の全レコードを確認

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

mysql> select *from DemoTable628;

実行結果は以下の通りです。

+-------+
| Value |
+-------+
| 10.97 |
| 20.04 |
| 12.00 |
| 89.56 |
+-------+
4 rows in set (0.00 sec)

浮動小数点数のみを取得するクエリ

列の値から浮動小数点数のみを取得するには、WHERE 句で「元の値」と「FLOOR() で切り捨てた値」を比較します。

mysql> select *from DemoTable628
    where Value!=FLOOR(Value);

実行結果は以下の通りです。

+-------+
| Value |
+-------+
| 10.97 |
| 20.04 |
| 89.56 |
+-------+
3 rows in set (0.00 sec)

仕組みの解説

FLOOR() 関数は、引数として渡された値以下の最大の整数を返します。たとえば FLOOR(10.97) は 10 を、FLOOR(12.00) は 12 を返します。

したがって、「Value != FLOOR(Value)」という条件は、元の値と切り捨て後の値が一致しないレコード、すなわち小数部分を持つ値だけを抽出することになります。上記の結果では、整数である 12.00 が除外され、10.97・20.04・89.56 の3件のみが表示されています。

別のアプローチ

同様の処理は、CEILING() や TRUNCATE() 関数を使っても実現できます。また、「MOD(Value, 1) != 0」のように1で割った余りを判定する方法でも、小数部分を持つレコードをフィルタリング可能です。用途や可読性に応じて使い分けるとよいでしょう。

  1. MySQLで特定のセル(条件に一致する行)のみの合計値を取得する方法

    MySQLで特定のセル、つまり条件に一致する行だけを対象に合計値を求めたい場合は、WHERE句で条件を指定し、集計関数のSUM()を使用します。ここでは、学生ごとの点数が登録されたテーブルを例に、特定の学生の点数合計を取得する手順を解説します。サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable1370 -> ( -> StudentName varchar(20), -> Marks int -> ); Query OK, 0 rows affected (0.87 sec)

  2. MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方

    MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829      (      Name varchar(