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

MySQLで文字列内の特定の文字を検索する方法|REGEXPの使い方を解説

MySQLで文字列内の特定の文字を検索するには

MySQLで文字列の中に特定の文字が含まれているかどうかを調べたい場合は、REGEXP(正規表現)を使用します。ここでは、「J」「A」「V」「A」という4文字が文字列内にこの順番で含まれているレコードを検索する例を紹介します。

1. サンプルテーブルの作成

まず、検索対象となるテーブルを作成します。

mysql> create table DemoTable
(
    Value varchar(50)
);
Query OK, 0 rows affected (3.92 sec)

2. レコードの挿入

INSERTコマンドを使って、テーブルにサンプルデータを登録します。

mysql> insert into DemoTable values('XYSJGHAKLMVDFFSA');
Query OK, 1 row affected (0.67 sec)
mysql> insert into DemoTable values('PQRSTJAVAL');
Query OK, 1 row affected (0.58 sec)
mysql> insert into DemoTable values('SJATUVAK');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('JSTUVA');
Query OK, 1 row affected (0.32 sec)

3. 登録データの確認

SELECT文でテーブル内の全レコードを表示し、登録内容を確認します。

mysql> select *from DemoTable;

実行すると、以下のような結果が出力されます。

+------------------+
| Value            |
+------------------+
| XYSJGHAKLMVDFFSA |
| PQRSTJAVAL       |
| SJATUVAK         |
| JSTUVA           |
+------------------+
4 rows in set (0.00 sec)

4. REGEXPを使った文字検索クエリ

次のクエリを実行すると、文字列内に「J」「A」「V」「A」がこの順序で含まれるレコードだけを抽出できます。

mysql> select *from DemoTable where Value REGEXP '.*J.*A.*V.*A';

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

+------------------+
| Value            |
+------------------+
| XYSJGHAKLMVDFFSA |
| PQRSTJAVAL       |
| SJATUVAK         |
+------------------+
3 rows in set (0.00 sec)

検索パターンの解説

パターン「.*J.*A.*V.*A」の意味は以下の通りです。

.*:任意の文字が0回以上繰り返される(つまり、前後にどんな文字があってもよい)
JAVA:それぞれの文字がこの順番で出現することを要求する

この条件により、「XYSJGHAKLMVDFFSA」「PQRSTJAVAL」「SJATUVAK」の3件が該当しました。一方、「JSTUVA」は「V」が含まれていないため、検索結果から除外されます。このようにREGEXPを活用すれば、LIKE句では表現しにくい柔軟な文字列検索が簡単に実現できます。

  1. MySQLでREGEXP(正規表現)を使って特定の単語を検索する方法

    MySQLでは、REGEXP演算子(正規表現)を使用することで、文字列の中から特定の単語やパターンを柔軟に検索できます。LIKE句よりも複雑な条件指定が可能なため、部分一致や文中の任意の位置にある単語を正確に探したい場合に非常に便利です。 サンプルテーブルの作成 まず、検索対象となるテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> Title varchar(255) -> ); Query OK, 0 rows affected (1.82 sec) レコードの挿入 次に、INSERTコマン

  2. MySQLで文字列や数値が混在するカラムから特定のレコードを取得する方法

    文字列・数値・特殊文字が混在するカラムから特定のレコードを取得したい場合は、ORDER BY CAST() を活用すると便利です。この記事では、SUBSTRING() 関数と組み合わせて、「指定した文字列で始まるレコードの中から、数値部分が最も大きいもの」を抽出する方法を、実際のSQL例とともにわかりやすく解説します。 サンプルテーブルの作成 まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable2006 ( UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Us