MySQLのLIKE演算子を使ったキーワード検索システムの作成方法
MySQLでキーワードに基づいて検索結果を表示したい場合、LIKE演算子を使用します。LIKE演算子は、部分一致による文字列検索を実現するための基本的な仕組みであり、簡易的な検索システムを構築する際に非常に役立ちます。
LIKE演算子の基本構文
SELECT * FROM テーブル名 WHERE カラム名 LIKE '%検索値%';
「%」はワイルドカードと呼ばれ、任意の文字列を表します。前後に「%」を付けることで、指定したキーワードが文字列のどこに含まれていても該当レコードとして抽出されます。
サンプルテーブルの作成
まず、検索対象となるテーブルを作成しましょう。
mysql> create table DemoTable812(Comments text); Query OK, 0 rows affected (0.61 sec)
テストデータの挿入
INSERTコマンドを使って、サンプルデータを登録します。
mysql> insert into DemoTable812 values('Good Looking');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable812 values('Awesome');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable812 values('Looking Gorgeous');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable812 values('Good Luck');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable812 values('Have a nice day');
Query OK, 1 row affected (0.21 sec)登録データの確認
SELECT文ですべてのレコードを表示して確認します。
mysql> select *from DemoTable812;
実行すると以下の出力が得られます。
+------------------+ | Comments | +------------------+ | Good Looking | | Awesome | | Looking Gorgeous | | Good Luck | | Have a nice day | +------------------+ 5 rows in set (0.00 sec)
キーワード検索の実行
それでは、LIKE演算子を使って「Look」というキーワードで検索してみましょう。
mysql> select *from DemoTable812 where Comments LIKE '%Look%';
実行結果は次のとおりです。
+------------------+ | Comments | +------------------+ | Good Looking | | Looking Gorgeous | +------------------+ 2 rows in set (0.00 sec)
このように、「Look」という文字列を含む「Good Looking」と「Looking Gorgeous」の2件だけが抽出されました。これがMySQLのLIKE演算子を使った基本的なキーワード検索の仕組みです。
ワイルドカードの使い方のポイント
- '%値%':前後どちらにもワイルドカードを付けると、文字列の中間に含まれる場合でもマッチします。
- '値%':前方にワイルドカードがない場合、指定した文字列で始まるレコードのみが対象になります。
- '%値':後方にワイルドカードがない場合、指定した文字列で終わるレコードのみが対象になります。
なお、大量のデータを扱う場合はLIKE検索がパフォーマンスのボトルネックになることがあります。そのようなケースでは、FULLTEXTインデックスや全文検索エンジンの導入も検討するとよいでしょう。
-
MySQLで@記号を使う方法!ユーザー定義変数の基本と実例をわかりやすく解説
MySQLで@記号を使用するには、SETコマンドを利用します。@記号は、セッション内で有効なユーザー定義変数を設定する際に使われる記号です。変数に値を格納しておけば、後続のクエリ内でその値を何度でも再利用できるため、条件の共通化や一時的な値の保持に非常に便利です。 @記号によるユーザー定義変数の基本構文 ユーザー定義変数を設定する基本的な構文は以下のとおりです。 SET @anyVariableName := yourValue; :=は代入演算子で、右側の値を左側の変数に代入します。これにより、以降のSQL文の中で@anyVariableNameを参照できるようになります。 サンプルテーブル
-
MySQLのLIKEクエリで「%」を含む列値を検索する方法【エスケープ処理の基本】
MySQLのLIKEクエリで「%」を含む値を検索するには?MySQLでは、「%」はLIKE句におけるワイルドカードとして機能するため、そのまま検索することはできません。「%」という文字そのものを含む列値を検索したい場合は、バックスラッシュ(\)によるエスケープ処理が必要です。基本構文「%」を含む列値を検索する場合の構文は以下の通りです。select * from yourTableNamewhere yourColumnName LIKE \%%;ポイントは、検索対象の「%」の直前に「\(バックスラッシュ)」を付けることです。これにより、ワイルドカードではなく通常の文字として扱われます。実際に