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

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演算子での部分一致検索では実現できない、精密な単語検索が必要な場面でぜひ活用してください。

  1. MySQLで誤入力(タイポ)を許容して文字列を検索する方法|SOUNDS LIKE演算子の使い方

    ユーザーが誤って「deom」(正しくは「demo」)や「samsumg」(正しくは「samsung」)のように入力してしまった場合でも、目的の文字列を検索できると便利です。MySQLでは、SOUNDS LIKE 演算子を使うことで、このようなスペルの揺れ(タイポ)を許容したあいまい検索が可能になります。サンプルテーブルの作成まず、検索対象となるテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(20) -> ); Query OK, 0 rows affected (0.95

  2. 【MySQL】SUBSTRING_INDEXでカンマ区切り文字列から指定位置の値を取得する方法

    カンマ区切りの文字列から、指定した位置にある単一の値を取り出したい場合は、SUBSTRING_INDEX() 関数を使用します。この関数をネスト(入れ子)して呼び出すことで、任意の位置の要素を簡単に抽出できます。1. サンプルテーブルの作成まず、カンマ区切りの文字列を格納するテーブルを作成します。mysql> create table DemoTable1615 -> ( -> ListOfSubject text -> ); Query OK, 0 rows affected (0.81 sec)2. レコードの挿入INSERT文を使って、カン