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

MySQLでLIKEとORを組み合わせて使う方法|IN演算子との違いも解説

MySQLでは、LIKE演算子とOR演算子を組み合わせて使用できます。この書き方は、IN演算子を使った場合と同じ結果が得られます。それぞれの構文を詳しく見ていきましょう。

基本構文

ケース1:LIKEとOR演算子を組み合わせる

SELECT * FROM テーブル名
WHERE カラム名 LIKE '値1'
   OR カラム名 LIKE '値2'
   OR カラム名 LIKE '値3';

ケース2:IN演算子を使う

SELECT * FROM テーブル名
WHERE カラム名 IN ('値1', '値2', '値3');

それでは、両方の構文を実際に確認してみましょう。まずはサンプル用のテーブルを作成します。

サンプルテーブルの作成

mysql> CREATE TABLE LikeDemo (
    ->   Id VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.58 sec)

次に、INSERT文でレコードを挿入していきます。

mysql> INSERT INTO LikeDemo VALUES('John123');
Query OK, 1 row affected (0.22 sec)

mysql> INSERT INTO LikeDemo VALUES('Smith205');
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO LikeDemo VALUES('Bob999');
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO LikeDemo VALUES('Carol9091');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO LikeDemo VALUES('Johnson2222');
Query OK, 1 row affected (0.15 sec)

mysql> INSERT INTO LikeDemo VALUES('David2345');
Query OK, 1 row affected (0.21 sec)

SELECT文で全レコードを表示して内容を確認します。

mysql> SELECT * FROM LikeDemo;

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

+-------------+
| Id          |
+-------------+
| John123     |
| Smith205    |
| Bob999      |
| Carol9091   |
| Johnson2222 |
| David2345   |
+-------------+
6 rows in set (0.00 sec)

ケース1:LIKE+OR演算子での検索

LIKEにOR演算子を組み合わせたクエリは次のように記述します。

mysql> SELECT * FROM LikeDemo
    -> WHERE Id LIKE 'John123%'
    ->    OR Id LIKE 'Carol9091%'
    ->    OR Id LIKE 'David2345%';

実行結果:

+-----------+
| Id        |
+-----------+
| John123   |
| Carol9091 |
| David2345 |
+-----------+
3 rows in set (0.00 sec)

ケース2:IN演算子での検索

同じ条件をIN演算子で記述すると、より簡潔に書けます。

mysql> SELECT * FROM LikeDemo
    -> WHERE Id IN ('John123', 'Carol9091', 'David2345');

実行結果:

+-----------+
| Id        |
+-----------+
| John123   |
| Carol9091 |
| David2345 |
+-----------+
3 rows in set (0.04 sec)

まとめ:LIKE+ORとINの使い分け

完全一致の複数条件でデータを絞り込むなら、IN演算子の方がシンプルで可読性に優れています。一方、前方一致や部分一致など、ワイルドカード(%)を使った曖昧検索が必要な場合には、LIKE ... OR ...の組み合わせが有効です。条件が増えるとクエリが長くなりやすい点には注意し、目的に応じて適切に使い分けましょう。

  1. MySQLのLIKE演算子を使って1つのクエリで複数の値を取得する方法

    LIKE演算子で複数の値を取得するにはLIKE演算子を使って複数の値を取得したい場合は、LIKE演算子とOR演算子を組み合わせて使用します。これにより、1つのクエリで複数のパターンに一致するレコードを抽出できます。まずはサンプル用のテーブルを作成しましょう。mysql> create table DemoTable1027 ( Id int, Name varchar(100) ); Query OK, 0 rows affected (1.64 sec)次に、INSERTコマンドを使ってテーブルにレコードを挿入します。mysql> insert into Demo

  2. MySQLクエリで「LIKE concat()」を使用することはできる?

    はい、MySQLではLIKE句とconcat()関数を組み合わせて使用することが可能です。concat()関数で動的にパターン文字列を生成し、それをLIKE句の検索条件として利用できます。実際にサンプルを使って手順を見ていきましょう。まず、テーブルを作成します。mysql> create table DemoTable ( Name varchar(50) ); Query OK, 0 rows affected (0.63 sec)次に、insertコマンドを使ってテーブルにレコードを挿入します。mysql> insert into DemoTable values(Jo