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

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%'などの組み合わせも検討するとよいでしょう。

  1. 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)

  2. MySQLのストアドプロシージャでテーブルのレコードを表示する方法

    MySQLでは、ストアドプロシージャ内にSELECT文を組み込むことで、テーブルのレコードを簡単に表示できます。ストアドプロシージャを活用すると、よく使うクエリを再利用可能な形で保存できるため、作業の効率化につながります。ここでは、実際の手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERT