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