MySQLで特定のキーワードを含むレコードをテーブルから抽出する方法(LIKE演算子の使い方)
MySQLでキーワードを含むレコードを抽出するには?
テーブル内のカラム値に特定のキーワードが含まれているレコードだけを取得したい場合があります。そのようなときは、LIKE演算子を使用します。
LIKE演算子は「%」などのワイルドカードと組み合わせることで、部分一致検索を簡単に行えるのが特徴です。ここでは、実際にテーブルを作成し、キーワード「MySQL」を含むレコードを抽出する手順を見ていきましょう。
1. テーブルを作成する
まずはサンプル用のテーブルを作成します。
mysql> create table DemoTable750 (Title varchar(200));
Query OK, 0 rows affected (0.69 sec)
2. レコードを挿入する
INSERT文を使って、いくつかのレコードを登録します。
mysql> insert into DemoTable750 values('Java and MongoDB,MySQL');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable750 values('MySQL,SQL Server');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable750 values('PL/SQL,Python,MongoDB');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable750 values('MySQL');
Query OK, 1 row affected (0.33 sec)3. 全レコードを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable750;
実行結果は以下の通りです。
+------------------------+
| Title |
+------------------------+
| Java and MongoDB,MySQL |
| MySQL,SQL Server |
| PL/SQL,Python,MongoDB |
| MySQL |
+------------------------+
4 rows in set (0.00 sec)
4. LIKE演算子でキーワードを含むレコードを抽出する
ここで、キーワードとして「MySQL」が含まれるレコードのみを取得したいとします。その場合は、以下のようにLIKE演算子を使ったクエリを実行します。
mysql> select *from DemoTable750 where Title LIKE '%MySQL%';
実行結果は次のようになります。
+------------------------+
| Title |
+------------------------+
| Java and MongoDB,MySQL |
| MySQL,SQL Server |
| MySQL |
+------------------------+
3 rows in set (0.00 sec)
ポイント解説
クエリ内の「%MySQL%」というパターンが重要です。「%」は任意の文字列(0文字以上)を表すワイルドカードであり、「MySQL」の前後にどんな文字列があっても一致するとみなされます。
- %MySQL%:前後に任意の文字列が付いていても「MySQL」を含むすべてのレコードに一致(部分一致)
- MySQL%:「MySQL」で始まるレコードに一致(前方一致)
- %MySQL:「MySQL」で終わるレコードに一致(後方一致)
このようにLIKE演算子とワイルドカードを組み合わせれば、柔軟な条件でのレコード検索が可能になります。大量データを扱う場合はパフォーマンスへの影響も考慮し、必要に応じてフルテキストインデックスなどの活用も検討するとよいでしょう。
-
MySQLでSELECT文の結果を使って別テーブルへ値を挿入する方法(INSERT INTO SELECT)
あるテーブルからデータを抽出しながら、別のテーブルに値を挿入したい場合は、INSERT INTO ... SELECT文を使用します。この構文を使えば、SELECT文の実行結果をそのまま別のテーブルに流し込むことができます。WHERE句と組み合わせれば、条件に合致するレコードだけをコピーすることも可能です。ここでは、実際にテーブルを2つ作成し、片方のテーブルからもう片方へデータをコピーする手順を順番に見ていきましょう。手順1:元となるテーブルを作成するまず、コピー元になるテーブル「DemoTable1」を作成します。mysql> create table DemoTable1->
-
MySQLテーブルから新しく追加されたレコードを取得する方法
MySQLでテーブルに新しく追加されたレコードを取得するには、ORDER BY句とLIMIT句を組み合わせて使用します。AUTO_INCREMENTで採番される主キー(ID)を基準に降順(DESC)で並べ替え、LIMITで取得件数を指定することで、最新のレコードだけを効率的に取り出せます。 サンプルテーブルの作成 まず、CREATE TABLE文でテーブルを作成します。ここでは、自動採番される「StudentId」を主キーとする学生テーブルを用意しました。 mysql> create table DemoTable1486 -> ( -> StudentId