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

MySQLの正規表現(REGEXP)で数字で始まる文字列のみを検索する方法

MySQLで「数字で始まる文字列」だけを抽出したい場合、正規表現(Regular Expression)を使うのが最も簡単です。この記事では、テーブルの作成からデータの挿入、そしてREGEXPを使った検索クエリまで、具体的な手順を順番に解説します。

1. テーブルを作成する

まずはサンプル用のテーブルを作成します。

mysql> create table DemoTable
(
    Id varchar(200)
);
Query OK, 0 rows affected (0.59 sec)

2. テーブルにレコードを挿入する

INSERTコマンドを使って、さまざまなパターンの文字列を登録します。数字で始まるもの、記号やアンダースコアで始まるものなど、複数のケースを用意しておくと動作確認がしやすくなります。

mysql> insert into DemoTable values('123User');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('_$123User');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('User123456');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('0000User');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('&^*User');
Query OK, 1 row affected (0.24 sec)

3. 登録したデータを確認する

SELECTコマンドでテーブルの中身を表示してみましょう。

mysql> select *from DemoTable;

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

+------------+
| Id         |
+------------+
| 123User    |
| _$123User  |
| User123456 |
| 0000User   |
| &^*User    |
+------------+
5 rows in set (0.00 sec)

4. REGEXPで数字で始まる文字列を検索する

ここが本題です。MySQLのREGEXP演算子と正規表現パターン ^[0-9] を組み合わせることで、「先頭が数字(0〜9)である文字列」だけを取り出せます。^ は文字列の先頭を意味し、[0-9] は半角数字1文字に一致することを表します。

mysql> SELECT DISTINCT Id FROM DemoTable WHERE Id REGEXP '^[0-9]';

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

+----------+
| Id       |
+----------+
| 123User  |
| 0000User |
+----------+
2 rows in set (0.58 sec)

ポイントまとめ

  • ^[0-9]:先頭が半角数字の文字列に一致する正規表現パターン。
  • DISTINCT を付けることで、重複する結果を除外できます。
  • 同様に、英字で始まる文字列を探したい場合は ^[a-zA-Z] のようにパターンを変更するだけで対応可能です。

このように、MySQLではREGEXPを活用することで、LIKE句だけでは難しい柔軟なパターンマッチング検索を簡単に実装できます。

  1. ApacheとMySQLを連携させる方法|ユーザー認証とログ管理の基本

    ApacheとMySQLの連携とは本記事では、Webサーバー「Apache」とデータベース「MySQL」を組み合わせて活用する方法を解説します。Apacheは、Apache Software Foundationによって開発・保守されているWebサーバーソフトウェアです。ユーザーからWebページへのアクセス要求(リクエスト)を受け付け、いくつかのセキュリティチェックを実施したうえで、目的のページへとユーザーを誘導します。MySQLによるユーザー認証MySQLデータベースを使ってユーザー認証を行えるプログラムは数多く存在します。これらのプログラムを利用すれば、アクセスログをMySQLのテーブルに

  2. Pythonで「1」のみを含む部分文字列の個数を求めるプログラム

    問題の概要2進数文字列 s が与えられたとき、すべての文字が「1」である部分文字列の個数を求めます。答えは非常に大きな値になる可能性があるため、10^9 + 7 で割った余りを返す必要があります。例えば、入力が s = 1011010 の場合、出力は 5 になります。これは、単独の「1」が4回、「11」が1回現れるためです。解法のアプローチこの問題は、次の手順に従って解くことができます。m := 10^9 + 7 としますresult := 0 で初期化します2進数文字列を「0」で分割します分割された各要素 x に対して、以下を処理しますx が空文字列の場合は、次の反復へ進みますresult