MySQLでLIKEを複数条件に使う方法|WHERE句は1つ、ANDで組み合わせるだけ
MySQLでLIKEを複数条件に指定する基本
MySQLで複数の部分一致検索を行いたい場合、WHERE句を2つ並べる必要はありません。1つのWHERE句の中でLIKE演算子を複数回使用し、AND演算子で連結するだけで実現できます。
ここでは、Id列とName列の両方に対してLIKEによる部分一致検索を行う具体例を、テーブル作成から順に見ていきましょう。
サンプルテーブルの作成
まず、動作確認用のテーブルを作成します。テーブル作成用のクエリは以下の通りです。
mysql> create table WhereDemo
-> (
-> Id int,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.56 sec)
レコードの挿入
次に、INSERT文を使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into WhereDemo values(101,'Maxwell');
Query OK, 1 row affected (0.14 sec)
mysql> insert into WhereDemo values(110,'David');
Query OK, 1 row affected (0.21 sec)
mysql> insert into WhereDemo values(1000,'Carol');
Query OK, 1 row affected (0.18 sec)
mysql> insert into WhereDemo values(1100,'Bob');
Query OK, 1 row affected (0.47 sec)
mysql> insert into WhereDemo values(115,'Sam');
Query OK, 1 row affected (0.23 sec)
全レコードの表示
SELECT文ですべてのレコードを表示して、データが正しく登録されているか確認します。
mysql> select *from WhereDemo;
実行結果は以下の通りです。
+------+---------+
| Id | Name |
+------+---------+
| 101 | Maxwell |
| 110 | David |
| 1000 | Carol |
| 1100 | Bob |
| 115 | Sam |
+------+---------+
5 rows in set (0.00 sec)
LIKE演算子とANDを使った複数条件検索
それでは、LIKE演算子を使った実際の例を見てみましょう。ポイントは、1つのWHERE句の中でLIKEを2回使い、ANDで結合している点です。
mysql> select *from WhereDemo t1 where t1.Id LIKE '%1100%' AND t1.Name LIKE '%Bob%';
実行結果は以下の通りです。
+------+------+
| Id | Name |
+------+------+
| 1100 | Bob |
+------+------+
1 row in set (0.00 sec)
まとめ
MySQLで複数の部分一致条件を指定する場合は、WHERE句を複数書くのではなく、1つのWHERE句内でLIKEをAND演算子と組み合わせます。上記の例では、「Idが『1100』を含む」かつ「Nameが『Bob』を含む」という2つの条件を同時に満たすレコードのみが抽出されました。ワイルドカード(%)の位置を工夫すれば、前方一致・後方一致・部分一致など柔軟な検索にも応用できます。
-
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 SELECT文で別のテーブルの値を挿入する方法
あるテーブルの値を基に別のテーブルへデータを挿入したい場合は、INSERT INTO SELECT文を使用します。この構文では、SELECT文で抽出した結果セットをそのまま対象テーブルへ流し込めるため、テーブル間のデータ移行やコピーにもっとも効率的な方法の一つです。 以下の手順で、実際の動作を順番に確認していきましょう。 手順1:元となるテーブルを作成する まず、データのコピー元となるテーブル「demo82」を作成します。 mysql> create table demo82 -> (