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

【MySQL】SET型とFIND_IN_SETでデータを構造化し、簡単に取得できるようにする方法

SET型とFIND_IN_SETでMySQLのデータを構造化する方法

MySQLでは、SET型のカラムとFIND_IN_SET関数を組み合わせることで、あらかじめ定義しておいた複数の候補値からなるデータを構造化し、後から効率よく検索・取得できます。ここでは、実際にテーブルを作成しながら手順を解説します。

1. テーブルを作成する

まず、CountryNameというSET型のカラムを持つテーブル「DemoTable」を作成します。SET型では、US・UK・AUSのように、格納可能な値をカラム定義時に列挙しておきます。

mysql> create table DemoTable
(
    CountryName SET('US','UK','AUS')
);
Query OK, 0 rows affected (0.49 sec)

2. レコードを挿入する

続いて、INSERT文を使ってテーブルにデータを追加していきます。

mysql> insert into DemoTable values('US');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('UK');
Query OK, 1 row affected (0.09 sec)

3. 登録されたレコードを確認する

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

mysql> select *from DemoTable;

実行すると、以下のように登録済みのレコードが出力されます。

+-------------+
| CountryName |
+-------------+
| US          |
| UK          |
+-------------+
2 rows in set (0.00 sec)

4. FIND_IN_SETで目的の値を取得する

特定の値を含むレコードだけを取り出したい場合は、WHERE句でFIND_IN_SET関数を使います。FIND_IN_SETは、第1引数の文字列が第2引数のカンマ区切りリスト内に存在すればその位置を、存在しなければ0を返すため、「> 0」という条件で該当データを絞り込めます。

mysql> select *from DemoTable where find_in_set('UK',CountryName) > 0;

実行すると、「UK」が設定されているレコードのみが抽出されます。

+-------------+
| CountryName |
+-------------+
| UK          |
+-------------+
1 row in set (0.00 sec)

まとめ

SET型で候補値を事前に定義し、FIND_IN_SET関数で検索することで、限られた選択肢の中からデータを柔軟に構造化・取得できます。フォームのチェックボックスのように複数の選択肢から値を保存・検索したいケースで特に役立つので、ぜひ実務でも活用してみてください。

  1. JavaでMySQLデータベースにデータを挿入する方法をわかりやすく解説

    JavaからMySQLデータベースにデータを挿入するには、SQLのINSERTコマンドを使用します。基本的な構文は以下の通りです。 INSERT INTO テーブル名(カラム名1, カラム名2, ......カラム名N) VALUES(値1, 値2, ......値N); ここからは、Javaプログラムを使って実際にMySQLデータベースへレコードを挿入する手順を、順を追って見ていきましょう。 ステップ1:MySQLでテーブルを作成する まず、データの挿入先となるテーブルをMySQL側に作成します。以下のクエリを実行してください。 mysql> create table Insert

  2. MySQLで特定のカラムのデータをエクスポートする方法(INTO OUTFILEの使い方)

    MySQLで特定のカラムのデータをエクスポートする方法 MySQLでテーブルから特定のカラム(列)のデータだけをファイルに書き出したい場合は、SELECT文とINTO OUTFILEを組み合わせるのが最もシンプルで確実な方法です。この記事では、実際にテーブルを作成し、データを投入したうえで、特定のカラムをテキストファイルへエクスポートする手順を順番に解説します。 基本構文 特定のカラムをファイルに出力する際の基本構文は次のとおりです。 select yourColumnName from yourTableName into outfile yourLocationOfFile; このように