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

MySQLで正規表現(REGEXP)を使って特定の文字列を抽出する方法

MySQLでは、REGEXP演算子を使うことで、正規表現にマッチするレコードだけを簡単に抽出できます。本記事では、実際にテーブルを作成し、データを挿入したうえで、正規表現による文字列検索の具体的な手順を解説します。

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

まず、CREATE TABLE文を使用してテーブルを作成します。

mysql> create table DemoTable649 (Value text);
Query OK, 0 rows affected (0.68 sec)

2. テーブルへのデータ挿入

次に、INSERTコマンドを使ってサンプルデータを登録します。ここでは桁数の異なる数値文字列を複数挿入しています。

mysql> insert into DemoTable649 values('1903');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable649 values('9321010');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable649 values('983032023393');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable649 values('1234567892');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable649 values('989898989');
Query OK, 1 row affected (0.20 sec)

3. 登録データの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable649;

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

+--------------+
| Value        |
+--------------+
| 1903         |
| 9321010      |
| 983032023393 |
| 1234567892   |
| 989898989    |
+--------------+
5 rows in set (0.00 sec)

4. 正規表現(REGEXP)で特定の文字列を抽出する

ここからが本題です。以下のクエリでは、REGEXP演算子とパターン '[0-9]{11}' を組み合わせて、「数字が11桁連続している文字列」を持つレコードのみを取得しています。

mysql> select *from DemoTable649 where Value REGEXP '[0-9]{11}';

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

+--------------+
| Value        |
+--------------+
| 983032023393 |
+--------------+
1 row in set (0.00 sec)

解説:なぜこのレコードだけが抽出されたのか

正規表現 [0-9]{11} の意味は次のとおりです。

  • [0-9] … 0から9までのいずれかの数字1文字にマッチ
  • {11} … 直前のパターンがちょうど11回繰り返されることを意味

今回のサンプルデータの中で「11桁以上の連続した数字」を含むのは 983032023393(12桁)のみのため、このレコードだけが結果として返されました。なお、12桁の文字列にも11桁の連続部分が含まれるためマッチします。もし「ちょうど11桁の文字列」だけを厳密に抽出したい場合は、^[0-9]{11}$ のようにアンカー(^ と $)を追加するとよいでしょう。

まとめ

MySQLのREGEXP演算子を使えば、LIKE句では実現しづらい柔軟なパターンマッチングが可能になります。桁数指定や特定の文字種の組み合わせなど、正規表現を活用することで、より高度な文字列検索をSQLだけで実現できます。

  1. Ruby正規表現で条件分岐を使う方法 ― Onigmoエンジンの条件式を徹底解説

    2013年にリリースされたRuby 2.0の数多くの新機能の中で、私が最も注目していなかったのは、新しい正規表現エンジン「Onigmo」でした。正規表現はどの言語でも同じもの――Rubyがどう実装しているかを気にする必要はあるのでしょうか?ところが実際には、Onigmoには便利な仕掛けがいくつも隠されており、そのひとつが正規表現の中で条件分岐を使えるという機能です。この記事では、正規表現の条件式について詳しく掘り下げながら、Ruby実装ならではのクラスや、その制限を回避するためのテクニックまで解説していきます。それでは始めましょう!グループとキャプチャの基本正規表現の条件式を理解するには、まず

  2. Javaの正規表現で文字列から数値を抽出する方法

    Javaの正規表現(Regular Expression)を使えば、文字列の中から数値だけを簡単に取り出すことができます。この記事では、実際のコード例とともに、さまざまなパターンでの数値抽出の方法を解説します。文字列を解析し、必要な情報を抜き出すスキルは、テスターにとって欠かせない能力の一つです。特にAPIテストでは、JSONやXML形式のレスポンスを解析する場面が多く、正規表現の知識が大いに役立ちます。以下では、Javaの正規表現を使って文字列から数字・数値を抽出する具体的な例を紹介します。文字列からすべての数値を抽出するimport java.util.regex.Matcher; imp