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

MySQLでカンマ区切りのテキストデータ内から整数を検索する方法

はじめに

MySQLでは、数値がカンマ区切りで文字列として保存されているデータの中から、特定の整数を含むレコードを検索できます。ここでは、LIKE演算子を使った部分一致検索の方法を、具体的なサンプルとともに解説します。

1. サンプルテーブルの作成

まず、検索対象となるテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> DoubleValue varchar(20)
    -> );
Query OK, 0 rows affected (0.58 sec)

2. レコードの挿入

次に、INSERTコマンドを使用して、カンマ区切りの数値データを含むレコードを挿入します。

mysql> insert into DemoTable(DoubleValue) values('80.2,90.5,88.90');
Query OK, 1 row affected (0.44 sec)
mysql> insert into DemoTable(DoubleValue) values('78.56,45.80,88,45.6');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable(DoubleValue) values('12.34,90.06,89.90');
Query OK, 1 row affected (0.11 sec)

3. テーブルの内容を確認

SELECT文で全レコードを表示して、データが正しく登録されていることを確認します。

mysql> select *from DemoTable;

実行すると以下のような結果が出力されます。

+----+---------------------+
| Id | DoubleValue |
+----+---------------------+
| 1 | 80.2,90.5,88.90 |
| 2 | 78.56,45.80,88,45.6 |
| 3 | 12.34,90.06,89.90 |
+----+---------------------+
3 rows in set (0.00 sec)

4. LIKE句で整数を検索する

テキストデータ内から「80」という数値を含むレコードを検索するには、以下のようにLIKE句とワイルドカード(%)を組み合わせます。

mysql> select *from DemoTable where DoubleValue LIKE '%80%';

実行結果は次の通りです。

+----+---------------------+
| Id | DoubleValue |
+----+---------------------+
| 1 | 80.2,90.5,88.90 |
| 2 | 78.56,45.80,88,45.6 |
+----+---------------------+
2 rows in set (0.00 sec)

解説

上記の例では、「80」を含むすべての文字列が部分一致でヒットしています。つまり、「80.2」や「45.80」のように、小数点以下や他の数値の一部として「80」が含まれる場合も一致対象になります。これはLIKE '%80%'が文字列の部分一致を行うためです。

より厳密に「整数値としての80」だけを抽出したい場合は、アプリケーション側でカンマ区切りの値を分割して判定するか、正規表現が使えるREGEXPを活用するなど、要件に応じた工夫が必要です。

まとめ

カンマ区切りのテキストデータから特定の数値を検索する場合は、LIKE演算子による部分一致検索が手軽な方法です。ただし、部分一致のため意図しない数値までヒットする可能性がある点には注意し、必要に応じてREGEXPなども検討しましょう。

  1. MySQLでカンマ区切りの値の中から特定の文字列を検索する方法(REGEXP活用)

    カンマ区切りで保存された値の中から特定の文字列を検索したい場合、MySQLではREGEXP(正規表現)を使うのが効果的です。この記事では、実際にテーブルを作成し、カンマ区切りの値の中から「MySQL」という文字列を正確に抽出する手順を解説します。1. サンプルテーブルの作成まず、検索対象となるテーブルを作成します。mysql> create table DemoTable1902 ( Subjects text ); Query OK, 0 rows affected (0.00 sec)2. テストデータの挿入INSERT文を使って、カンマ区切りの値を持つレコー

  2. 【MySQL】カンマ区切りのリストから特定の文字列を検索するには?find_in_set()の使い方を解説

    カンマ区切りのデータ検索には正規表現よりfind_in_set()が便利MySQLでカンマ区切りのリスト(CSV形式のカラム)から特定の値を検索したい場合、正規表現を使わなくても、find_in_set() 関数を使うことで簡単に実現できます。find_in_set()は、カンマ区切りの文字列リストの中に指定した値が含まれているかどうかを判定してくれる便利な関数です。基本構文select *from テーブル名 where find_in_set(検索したい値, カラム名);それでは、実際にサンプルテーブルを作成しながら動作を確認していきましょう。サンプルテーブルの作成まずは以下のコマンドでテ