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

MySQLでキーワード検索を実装する方法をわかりやすく解説

MySQLでキーワード検索を実装する基本構文

MySQLでキーワード検索を実装するには、LIKE演算子を使用します。LIKE演算子は、指定したパターンに一致する文字列を検索するためのもので、ワイルドカード「%」(任意の0文字以上の文字列を表す)と組み合わせることで、部分一致検索が可能になります。

基本構文は以下の通りです。

SELECT * FROM yourTableName
WHERE yourColumnName LIKE '%anyKeywordName%'
OR yourColumnName LIKE '%anyKeywordName%';

サンプルテーブルの作成

実際の動作を理解するために、まずテーブルを作成しましょう。以下がテーブル作成のクエリです。

mysql> create table KeywordSearchDemo
-> (
-> StudentId int,
-> StudentName varchar(100)
-> );
Query OK, 0 rows affected (0.86 sec)

レコードの挿入

次に、INSERTコマンドを使ってテーブルにレコードを挿入します。レコード挿入のクエリは以下の通りです。

mysql> insert into KeywordSearchDemo values(100,'Adam John');
Query OK, 1 row affected (0.40 sec)

mysql> insert into KeywordSearchDemo values(101,'John Smith');
Query OK, 1 row affected (0.17 sec)

mysql> insert into KeywordSearchDemo values(103,'John Taylor');
Query OK, 1 row affected (0.15 sec)

mysql> insert into KeywordSearchDemo values(104,'Carol Taylor');
Query OK, 1 row affected (0.21 sec)

mysql> insert into KeywordSearchDemo values(105,'Maria Garcia');
Query OK, 1 row affected (0.20 sec)

mysql> insert into KeywordSearchDemo values(106,'James Smith');
Query OK, 1 row affected (0.12 sec)

mysql> insert into KeywordSearchDemo values(110,'Mike Brown');
Query OK, 1 row affected (0.22 sec)

登録データの確認

SELECT文でテーブル内の全レコードを表示し、データが正しく登録されているか確認します。

mysql> select *from KeywordSearchDemo;

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

+-----------+--------------+
| StudentId | StudentName |
+-----------+--------------+
| 100 | Adam John |
| 101 | John Smith |
| 103 | John Taylor |
| 104 | Carol Taylor |
| 105 | Maria Garcia |
| 106 | James Smith |
| 110 | Mike Brown |
+-----------+--------------+
7 rows in set (0.00 sec)

キーワードで検索するクエリの実行

ここで、特定のキーワードに関連する名前だけを抽出するクエリを実行してみましょう。以下の例では、「John」または「Taylor」というキーワードを含むレコードを検索しています。

mysql> select StudentName from KeywordSearchDemo
-> where StudentName Like '%John%' or StudentName Like '%Taylor%';

キーワード「John」と「Taylor」を含むレコードのみが表示されました。

+--------------+
| StudentName |
+--------------+
| Adam John |
| John Smith |
| John Taylor |
| Carol Taylor |
+--------------+
4 rows in set (0.10 sec)

StudentIdカラムも一緒に取得する

SELECT句の指定を変えれば、StudentIdカラムも一緒に取得できます。「*」を指定すれば、すべてのカラムが取得対象になります。

mysql> select *from KeywordSearchDemo
-> where StudentName Like '%John%' or StudentName Like '%Taylor%';

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

+-----------+--------------+
| StudentId | StudentName |
+-----------+--------------+
| 100 | Adam John |
| 101 | John Smith |
| 103 | John Taylor |
| 104 | Carol Taylor |
+-----------+--------------+
4 rows in set (0.00 sec)

補足:パフォーマンスとより高度な検索について

「%キーワード%」のように先頭にワイルドカードを付けたLIKE検索は、インデックスを利用できないため、大量のデータを扱う場合はパフォーマンスが低下する可能性があります。大規模なテキスト検索が必要なケースでは、FULLTEXTインデックスとMATCH...AGAINST構文を使った全文検索を検討するとよいでしょう。また、大文字・小文字を区別せずに検索したい場合は、カラムの照合順序(COLLATION)の設定を確認しておくことも重要です。

  1. MySQLでBETWEEN句を使って列の間(範囲)を検索する方法

    MySQLで列間を検索するにはBETWEEN句を使うMySQLでは、BETWEEN句を利用することで、ある値が2つの列の間(範囲内)に存在するかどうかを簡単に調べることができます。この記事では、テーブルの作成からデータの挿入、そして実際に列間を検索するクエリの実行まで、手順を追ってわかりやすく解説します。1. サンプルテーブルを作成するまず、検索用のサンプルテーブル「DemoTable」を作成しましょう。mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score

  2. MySQLのLIKEクエリで「%」を含む列値を検索する方法【エスケープ処理の基本】

    MySQLのLIKEクエリで「%」を含む値を検索するには?MySQLでは、「%」はLIKE句におけるワイルドカードとして機能するため、そのまま検索することはできません。「%」という文字そのものを含む列値を検索したい場合は、バックスラッシュ(\)によるエスケープ処理が必要です。基本構文「%」を含む列値を検索する場合の構文は以下の通りです。select * from yourTableNamewhere yourColumnName LIKE \%%;ポイントは、検索対象の「%」の直前に「\(バックスラッシュ)」を付けることです。これにより、ワイルドカードではなく通常の文字として扱われます。実際に