MySQLで複数のキーワードに一致するレコードを抽出する方法|RLIKE演算子の使い方を解説
RLIKE演算子を使った複数条件でのレコード絞り込み
MySQLで複数の単語(キーワード)のいずれかに一致するレコードを抽出したい場合は、RLIKE演算子を使用します。RLIKEは正規表現によるパターンマッチングを行う演算子で、|(パイプ)で区切ることで、OR条件のように複数の値を指定できます。
基本的な構文は以下のとおりです。
SELECT * FROM yourTableName
WHERE yourColumnName RLIKE 'yourValue1|yourValue2';
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> CREATE TABLE DemoTable1935
(
Subject varchar(20)
);
Query OK, 0 rows affected (0.00 sec)
テストデータの挿入
INSERTコマンドを使って、いくつかのレコードを登録します。
mysql> INSERT INTO DemoTable1935 VALUES('MySQL');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1935 VALUES('Python');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1935 VALUES('MongoDB');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1935 VALUES('SQL Server');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1935 VALUES('PL SQL');
Query OK, 1 row affected (0.00 sec)
登録データの確認
SELECT文ですべてのレコードを表示してみます。
mysql> SELECT * FROM DemoTable1935;
実行結果は以下のとおりです。
+------------+
| Subject |
+------------+
| MySQL |
| Python |
| MongoDB |
| SQL Server |
| PL SQL |
+------------+
5 rows in set (0.00 sec)
RLIKEで複数キーワードをフィルタリングするクエリ
ここで、「SQL」または「Python」という文字列を含むレコードだけを抽出してみましょう。以下のようなクエリを実行します。
mysql> SELECT * FROM DemoTable1935
WHERE Subject RLIKE 'SQL|Python';
実行結果は以下のとおりです。
+------------+
| Subject |
+------------+
| MySQL |
| Python |
| SQL Server |
| PL SQL |
+------------+
4 rows in set (0.00 sec)
実行結果のポイント
注目すべきは、「MySQL」「SQL Server」「PL SQL」のように部分一致したレコードも抽出されている点です。RLIKEは正規表現マッチングを行うため、列の値の中に指定したパターンが含まれていれば、そのレコードがすべて該当します。
なお、RLIKEはREGEXPのシノニム(別名)であり、どちらを使っても同じ動作になります。完全一致で抽出したい場合はIN句や=演算子を、前方一致・後方一致にはLIKE 'xxx%'などの組み合わせも検討するとよいでしょう。
-
MySQLのDELETE文とIN句を組み合わせて1つのクエリで複数レコードを削除する方法
MySQLでは、IN()句を活用することで、複数の条件値に一致するレコードを1つのDELETEクエリでまとめて削除できます。個別に削除クエリを実行する必要がなく、効率的なデータ操作が可能になります。ここでは、サンプルテーブルを作成し、実際にIN()句を使ったレコード削除の手順を解説します。1. サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable1922 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20)
-
MySQLのストアドプロシージャでテーブルのレコードを表示する方法
MySQLでは、ストアドプロシージャ内にSELECT文を組み込むことで、テーブルのレコードを簡単に表示できます。ストアドプロシージャを活用すると、よく使うクエリを再利用可能な形で保存できるため、作業の効率化につながります。ここでは、実際の手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERT