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

MySQLクエリでLIKE句を2回使う方法|OR条件で複数パターンを検索する

MySQLでは、LIKE句を1つのクエリ内で2回以上使用することで、複数のパターンに一致するレコードを柔軟に抽出できます。この記事では、実際にテーブルを作成し、LIKE句を2回組み合わせた検索クエリの書き方を手順を追って解説します。

1. サンプルテーブルを作成する

まず、検索対象となるテーブルを作成します。

mysql> create table DemoTable2009
(
    Name varchar(20)
);
Query OK, 0 rows affected (0.51 sec)

2. テーブルにレコードを挿入する

INSERT文を使って、いくつかの名前データを登録します。

mysql> insert into DemoTable2009 values('John Doe');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable2009 values('Adam Smith');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable2009 values('John Smith');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable2009 values('David Miller');
Query OK, 1 row affected (0.18 sec)

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

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

mysql> select * from DemoTable2009;

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

+--------------+
| Name         |
+--------------+
| John Doe     |
| Adam Smith   |
| John Smith   |
| David Miller |
+--------------+
4 rows in set (0.00 sec)

4. LIKE句を2回使用した検索クエリ

ここが本題です。WHERE句の中でLIKE句をOR条件で2回記述すると、「Smithを含む」または「Davidを含む」という2つのパターンに一致するレコードを一度に取得できます。

mysql> select * from DemoTable2009
    where Name like '%Smith%'
    or Name like '%David%';

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

+--------------+
| Name         |
+--------------+
| Adam Smith   |
| John Smith   |
| David Miller |
+--------------+
3 rows in set (0.00 sec)

ポイント解説

  • %(ワイルドカード):任意の文字列に一致します。「%Smith%」は「Smith」を含むすべての文字列にマッチします。
  • OR条件:LIKE句を複数回使う場合は、OR演算子でつなぐことで「いずれかのパターンに一致」するレコードを抽出できます。
  • AND条件との違い:ANDを使うと両方のパターンに同時に一致する必要があるため、目的に応じて使い分けましょう。

このように、LIKE句を複数回組み合わせることで、単一のクエリでも柔軟な部分一致検索が可能になります。より多くの条件が必要な場合も、同様にOR(またはAND)でLIKE句をつなぎ続けるだけで対応できます。

  1. MySQLでAND演算子とOR演算子を組み合わせたSELECTクエリの使い方

    MySQLでは、WHERE句の中でAND演算子とOR演算子を組み合わせることで、複数の条件に基づいた柔軟なデータ抽出が可能になります。この記事では、実際にテーブルを作成し、ANDとORを組み合わせたSELECTクエリの実行方法を手順を追って解説します。1. サンプルテーブルの作成まず、CREATE TABLE文を使用してテーブルを作成します。mysql> create table DemoTable ( StudentId int, StudentName varchar(20), StudentSubject varchar(20) ); Query OK, 0

  2. MySQLでLIKEをIN()のように実装するクエリの書き方

    MySQLのIN()のような動作を実現するには、LIKE演算子と組み合わせてCOUNT()関数やIF()関数を使用します。この記事では、具体的な手順をサンプルコード付きで解説します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable    -> (    -> Subject varchar(80)    -> );Query OK, 0 rows affected (0.58 sec)