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

【MySQL】LIKE演算子とOR条件で列の値を2つの文字列のいずれかに一致させて検索する方法

LIKE演算子とOR条件で複数の文字列に一致するレコードを取得する

MySQLで、列の値に「MySQL」や「Algorithm」といった2つの文字列のうちいずれか1つでも一致するレコードを取得したい場合には、LIKE演算子をOR条件と組み合わせて使用します。ワイルドカードの % を文字列の前後に付けることで、部分一致での柔軟な検索が可能になります。

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

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

mysql> create table DemoTable762 (Title text);
Query OK, 0 rows affected (0.54 sec)

2. レコードを挿入する

insertコマンドを使って、テーブルにいくつかのレコードを追加します。

mysql> insert into DemoTable762 values('Introduction to Java');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable762 values('MySQL is a RDBMS');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable762 values('Data Structure and Algorithm in Java');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable762 values('Data Structure and Algorithm in C and C++');
Query OK, 1 row affected (0.18 sec)

3. テーブルの中身を確認する

select文を使用して、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable762;

このクエリを実行すると、以下のような出力が得られます。

+-------------------------------------------+
| Title |
+-------------------------------------------+
| Introduction to Java |
| MySQL is a RDBMS |
| Data Structure and Algorithm in Java |
| Data Structure and Algorithm in C and C++ |
+-------------------------------------------+
4 rows in set (0.00 sec)

4. 2つの文字列のいずれかに一致するレコードを取得するクエリ

以下が、「MySQL」または「Algorithm」という2つの文字列のどちらかに一致するレコードを抽出するクエリです。

mysql> select *from DemoTable762 where Title LIKE '%MySQL%' or Title LIKE '%Algorithm%';

実行すると、次の出力が得られます。

+-------------------------------------------+
| Title |
+-------------------------------------------+
| MySQL is a RDBMS |
| Data Structure and Algorithm in Java |
| Data Structure and Algorithm in C and C++ |
+-------------------------------------------+
3 rows in set (0.00 sec)

ご覧のとおり、「Introduction to Java」だけが除外され、キーワードを含む3件のレコードが正しく取得できました。

ポイント解説

  • LIKE '%文字列%' は、対象文字列の前後に任意の文字が存在することを許容する部分一致検索です。
  • OR条件で複数のLIKE句をつなぐことで、複数キーワードのいずれかに該当する行を一度に抽出できます。
  • マッチさせたい文字列が3つ以上になる場合は、正規表現を使える REGEXP 演算子を利用すると、クエリをより簡潔に書くことができます。
  1. MySQLで条件に応じて同じ列の2つの値を連結する方法

    MySQLで条件に応じて同じ列の2つの値を連結する方法 MySQLでは、max() などの集計関数と CASE 式を組み合わせることで、条件の異なる同じ列の値を1つの文字列として連結できます。この記事では、サンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、create table コマンドでテーブルを作成しましょう。 mysql> create table DemoTable1869     (     Id int,   &nb

  2. MySQLで2つの列のすべての値をカウントし、NULL値を除外する方法

    MySQLでは、COUNT関数を組み合わせることで、複数の列に含まれるすべての値をカウントできます。COUNT関数はNULL値を自動的に除外するため、NULLが混在するデータでも正確な合計件数を取得できるのが特徴です。ここでは、2つの列の値をカウントし、NULL値を除外した合計カウントを求める方法を具体的な例で解説します。 1. サンプルテーブルの作成 まず、学生名と点数を格納するテーブルを作成します。 mysql> create table DemoTable1975     (     StudentNa