MySQLで文字列から完全一致の単語を検索するクエリの書き方
MySQLで文字列から特定の単語を完全一致で検索したい場合、REGEXP演算子と正規表現パターンを組み合わせるのが効果的です。以下の構文を使用します。
select * from テーブル名 where カラム名 regexp '(^|[[:space:]])検索したい単語([[:space:]]|$)';
この正規表現パターンは、検索対象の単語の直前と直後が、それぞれ「文字列の先頭(^)」「空白([[:space:]])」「文字列の末尾($)」のいずれかである場合にのみマッチします。そのため、「Java」で検索した際に「JavaScript」までヒットしてしまうといった、部分一致による誤検出を防ぐことができます。
サンプルテーブルの作成
まず、動作確認用のテーブルを作成します。
mysql> create table DemoTable
(
Title text
);
Query OK, 0 rows affected (0.23 sec)レコードの挿入
insertコマンドを使って、テーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable values('This is the Introduction to Java');
Query OK, 1 row affected (0.05 sec)
mysql> insert into DemoTable values('This is the Introduction to MongoDB');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable values('This is the Introduction to MySQL');
Query OK, 1 row affected (0.06 sec)テーブルの内容を確認する
select文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、次のような出力が得られます。
+-------------------------------------+ | Title | +-------------------------------------+ | This is the Introduction to Java | | This is the Introduction to MongoDB | | This is the Introduction to MySQL | +-------------------------------------+ 3 rows in set (0.00 sec)
完全一致で単語を検索するクエリ
それでは、文字列から「MySQL」という単語を完全一致で検索するクエリを実行してみます。
mysql> select *from DemoTable where Title regexp '(^|[[:space:]])MySQL([[:space:]]|$)';
実行結果は以下のとおりです。
+-----------------------------------+ | Title | +-----------------------------------+ | This is the Introduction to MySQL | +-----------------------------------+ 1 row in set (0.13 sec)
このように、REGEXPと正規表現パターンを組み合わせることで、単語の一部だけが一致するレコードを除外し、目的の単語が独立した単語として含まれているレコードだけを正確に抽出できます。LIKE演算子での部分一致検索では実現できない、精密な単語検索が必要な場面でぜひ活用してください。
-
MySQLで誤入力(タイポ)を許容して文字列を検索する方法|SOUNDS LIKE演算子の使い方
ユーザーが誤って「deom」(正しくは「demo」)や「samsumg」(正しくは「samsung」)のように入力してしまった場合でも、目的の文字列を検索できると便利です。MySQLでは、SOUNDS LIKE 演算子を使うことで、このようなスペルの揺れ(タイポ)を許容したあいまい検索が可能になります。サンプルテーブルの作成まず、検索対象となるテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(20) -> ); Query OK, 0 rows affected (0.95
-
【MySQL】SUBSTRING_INDEXでカンマ区切り文字列から指定位置の値を取得する方法
カンマ区切りの文字列から、指定した位置にある単一の値を取り出したい場合は、SUBSTRING_INDEX() 関数を使用します。この関数をネスト(入れ子)して呼び出すことで、任意の位置の要素を簡単に抽出できます。1. サンプルテーブルの作成まず、カンマ区切りの文字列を格納するテーブルを作成します。mysql> create table DemoTable1615 -> ( -> ListOfSubject text -> ); Query OK, 0 rows affected (0.81 sec)2. レコードの挿入INSERT文を使って、カン