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

MySQLのTEXT型カラム内から文字列を検索する方法(LIKE句の使い方)

MySQLでは、LIKE句を使用することで、TEXT型などのテキストカラム内に含まれる特定の文字列を簡単に検索できます。

基本構文

select *from yourTableName where yourColumnName like '%anyStringValue%';

ここで重要なのは「%」というワイルドカードです。「%」は任意の0文字以上の文字列を表すため、'%文字列%'と指定すると、その文字列がカラム値のどこかに含まれているレコードをすべて取得できます。

サンプルテーブルの作成

それでは、実際に構文を使ってみましょう。まず、以下のようにTEXT型のカラムを持つテーブルを作成します。

mysql> create table SearchTextDemo
    -> (
    -> BookName TEXT
    -> );
Query OK, 0 rows affected (0.55 sec)

テストデータの挿入

次に、書籍名のデータをいくつか挿入します。

mysql> insert into SearchTextDemo values('Let us C');
Query OK, 1 row affected (0.28 sec)

mysql> insert into SearchTextDemo values('C in Depth');
Query OK, 1 row affected (0.14 sec)

mysql> insert into SearchTextDemo values('C in Depth with Data Structure');
Query OK, 1 row affected (0.18 sec)

mysql> insert into SearchTextDemo values('Introduction to Java');
Query OK, 1 row affected (0.17 sec)

mysql> insert into SearchTextDemo values('Java in Depth');
Query OK, 1 row affected (0.13 sec)

登録データの確認

SELECT文ですべてのレコードを表示して、データが正しく登録されているか確認しましょう。

mysql> select *from SearchTextDemo;

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

+--------------------------------+
| BookName                       |
+--------------------------------+
| Let us C                       |
| C in Depth                     |
| C in Depth with Data Structure |
| Introduction to Java           |
| Java in Depth                  |
+--------------------------------+
5 rows in set (0.00 sec)

5件のレコードが正しく登録されていることがわかります。

LIKE句による文字列検索の実行

それでは、「in Depth」という文字列がBookNameカラム内に含まれるレコードを検索してみます。

mysql> select *from SearchTextDemo where BookName like '%in Depth%';

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

+--------------------------------+
| BookName                       |
+--------------------------------+
| C in Depth                     |
| C in Depth with Data Structure |
| Java in Depth                  |
+--------------------------------+
3 rows in set (0.00 sec)

結果の解説

上記の出力結果を見ると、TEXT型の「BookName」カラムから「in Depth」という文字列を含む3件のレコードが抽出されています。このように、LIKE句と「%」ワイルドカードを組み合わせることで、部分一致検索を手軽に行うことができます。

なお、大文字・小文字を区別せずに検索したい場合は照合順序(COLLATE)の設定によりますが、デフォルト設定の多くでは区別されません。厳密に区別したい場合は BINARY キーワードを使用してください。また、大量のデータを対象に頻繁な部分一致検索を行う場合は、パフォーマンスを考慮してフルテキストインデックス(FULLTEXT INDEX)の利用も検討するとよいでしょう。

  1. JavaScriptで文字列を検索する方法【search()メソッドの使い方を解説】

    JavaScriptで文字列を検索する方法 JavaScriptで文字列の中から特定の文字列を探すには、search()メソッドを使用します。このメソッドは、引数に渡した文字列(または正規表現)が対象の文字列内で最初に一致した位置(インデックス)を返し、見つからなかった場合は -1 を返します。 以下は、JavaScriptで文字列を検索するサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8" />

  2. MySQLデータベースで文字列を高速に検索するには?FULLTEXT検索の使い方を徹底解説

    MySQLデータベース内の文字列を素早く検索したい場合、FULLTEXT(全文検索)インデックスを利用するのが最も効果的です。LIKE句による部分一致検索はレコード数が増えるほどパフォーマンスが低下しますが、FULLTEXTインデックスを作成しておけば、大量のデータからでも目的の文字列を高速に抽出できます。1. テーブルを作成するまず、検索対象となるテーブルを作成しましょう。ここでは「Title」というテキスト型カラムを持つシンプルなテーブルを用意します。mysql> create table DemoTable1554 -> ( -> Title text