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

MySQLのWHERE句で複数のORを使うときの代替手段は?REGEXPでORクエリをスマートに書く方法

MySQLで「WHERE ... OR」のようにOR条件を複数つなげる代わりに、REGEXP(正規表現)を使うという代替手段があります。REGEXPでは「|」(パイプ)がORと同じ働きをするため、複数のキーワードをひとつの条件にまとめて簡潔に記述できるのが特徴です。

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable684(EmployeeInformation text);
Query OK, 0 rows affected (0.68 sec)

レコードの挿入

続いて、INSERTコマンドを使ってテーブルにデータを追加します。

mysql> insert into DemoTable684 values('John 21 Google');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable684 values('Carol 23 Amazon');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable684 values('Carol 26 Flipkart');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable684 values('David 29 Microsoft');
Query OK, 1 row affected (0.18 sec)

登録済みレコードの確認

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

mysql> select *from DemoTable684;

実行結果は以下のとおりです。

+---------------------+
| EmployeeInformation |
+---------------------+
| John 21 Google      |
| Carol 23 Amazon     |
| Carol 26 Flipkart   |
| David 29 Microsoft  |
+---------------------+
4 rows in set (0.00 sec)

REGEXPを使ったOR条件の実装

以下が、REGEXPを使ってMySQLの「WHERE ... OR」と同等の検索を行うクエリです。

mysql> select *from DemoTable684 where EmployeeInformation REGEXP '(David|29|Microsoft)';

実行結果:

+---------------------+
| EmployeeInformation |
+---------------------+
| David 29 Microsoft  |
+---------------------+
1 row in set (0.00 sec)

クエリのポイント

正規表現「(David|29|Microsoft)」の中で、「|」は選択肢(OR)を意味します。つまりこのクエリは、カラムの値の中に「David」「29」「Microsoft」のいずれかが含まれている行をすべて取得します。今回の例では、「David 29 Microsoft」だけがこれらの語を含んでいるため、1件だけヒットしています。

従来のORとの比較

同じ検索をLIKE演算子とORで書くと、次のようになります。
SELECT * FROM DemoTable684 WHERE EmployeeInformation LIKE '%David%' OR EmployeeInformation LIKE '%29%' OR EmployeeInformation LIKE '%Microsoft%';
条件が増えるほど記述が冗長になりがちですが、REGEXPを使えばパイプ区切りでコンパクトにまとめられるため、可読性の向上やメンテナンス性の改善が期待できます。部分一致による柔軟な検索を行いたい場合には、ぜひ活用を検討してみてください。

  1. MySQLでWHERE句に複数の条件を指定してデータを更新する方法

    MySQLでWHERE句に複数の値を指定して更新する方法MySQLのUPDATE文では、WHERE句に複数の条件を組み合わせることで、より正確に対象のレコードを絞り込んで更新することができます。AND演算子やOR演算子を使うことで、複数のカラムの値を条件として指定可能です。この記事では、実際にテーブルを作成し、WHERE句に複数の条件を指定してデータを更新する手順を具体的な例とともに解説します。まずはテーブルを作成する最初に、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int, -&

  2. MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法

    はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実