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

【MySQL入門】LIKEとORを組み合わせたテキスト検索でレコードを取得する方法

MySQLでは、LIKE演算子とOR条件を組み合わせることで、複数のキーワードのいずれかに一致するレコードを柔軟に検索できます。本記事では、実際のコード例を通じて、その基本的な使い方をわかりやすく解説します。

1. テーブルの作成

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

mysql> create table DemoTable
(
    Subject text
);
Query OK, 0 rows affected (0.86 sec)

2. レコードの挿入

続いて、INSERTコマンドを使用してテーブルにサンプルデータを登録します。

mysql> insert into DemoTable values('Introduction to MySQL');
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable values('Deep Dive using Java');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('C in Depth');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Introduction to C++');
Query OK, 1 row affected (0.48 sec)

3. 登録済みレコードの確認

SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

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

+-----------------------+
| Subject               |
+-----------------------+
| Introduction to MySQL |
| Deep Dive using Java  |
| C in Depth            |
| Introduction to C++   |
+-----------------------+
4 rows in set (0.00 sec)

4. LIKEとORを使ったテキスト検索クエリ

ここからが本題です。「MySQL」と「using」という2つのキーワードのいずれかを含むレコードを取得するには、以下のようにWHERE句内でOR条件を組み合わせます。LIKE演算子のワイルドカード「%」は、任意の文字列(空文字を含む)にマッチします。

mysql> select *from DemoTable where Subject LIKE '%MySQL%' OR Subject LIKE '%using%';

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

+-----------------------+
| Subject               |
+-----------------------+
| Introduction to MySQL |
| Deep Dive using Java  |
+-----------------------+
2 rows in set (0.00 sec)

ポイント解説

このクエリでは、「Subject列に 'MySQL' を含む」または「Subject列に 'using' を含む」という2つの条件をORでつなぐことで、どちらかに該当するレコードを一度に取得できます。LIKE '%キーワード%' の形式は部分一致検索と呼ばれ、前方一致('キーワード%')や後方一致('%キーワード')よりも自由度の高い検索が可能です。

なお、パターンの先頭にワイルドカードを付けるとインデックスが利用できず、大規模なテーブルでは検索速度が低下する場合があります。大量のテキストデータを扱う場合は、FULLTEXTインデックスやMATCH...AGAINST構文の活用も検討するとよいでしょう。

  1. MySQLでGROUP BYとMAX()を使って学生ごとのMarks1・Marks2の最高得点を取得する方法

    学生ごとのMarks1およびMarks2の最高得点を取得するには、MAX()関数とGROUP BY句を組み合わせて使用します。MAX()は、グループごとに最も大きい値を返す集計関数です。ここでは、学生のメールアドレスごとにレコードをグループ化し、各科目の最高得点を求めます。 1. サンプルテーブルの作成 まず、以下のようにテーブルを作成します。 mysql> create table DemoTable     -> (     -> StudentEmailId varchar(20), &nb

  2. MySQLでAND・OR演算子を組み合わせた単一クエリを使って特定のレコードを取得する方法

    MySQLでは、AND演算子とOR演算子をWHERE句で組み合わせることで、複数の条件を指定しながら特定のレコードを1つのクエリで取得できます。本記事では、実際にテーブルを作成し、データを挿入して、AND・ORを組み合わせたクエリの動作を確認していきます。 1. テーブルの作成 まず、CREATE TABLE文でサンプル用のテーブルを作成します。 mysql> create table DemoTable2015 -> ( -> StudentId int, -> StudentName varchar(20), -> Stude