MySQLのREGEXPを使って数字とドットを含むレコードを取得する方法
MySQLでは、REGEXP演算子を使用することで、正規表現にマッチするレコードを簡単に抽出できます。本記事では、「数字とドット(.)」で構成されたバージョン文字列のみを取得する方法を、具体的なサンプルコードとともに解説します。
サンプルテーブルの作成
まず、テーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> Version varchar(20)
-> );
Query OK, 0 rows affected (0.77 sec)
レコードの挿入
次に、INSERTコマンドを使用して、テーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable values('1.0.0');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('2.s6.9');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('1.5.0');
Query OK, 1 row affected (0.12 sec)テーブルの内容を確認する
SELECT文を使用して、テーブル内のすべてのレコードを表示します。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+---------+
| Version |
+---------+
| 1.0.0 |
| 2.s6.9 |
| 1.5.0 |
+---------+
3 rows in set (0.00 sec)
REGEXPで数字とドットのみのレコードを取得する
ドット(.)と数字のみで構成されたレコードを取得するには、以下のようなクエリを実行します。
mysql> select *from DemoTable
-> where Version regexp '^[0-9]+\.[0-9]+(\.[0-9]+)*';
実行結果は以下の通りです。
+---------+
| Version |
+---------+
| 1.0.0 |
| 1.5.0 |
+---------+
2 rows in set (0.00 sec)
正規表現パターンの解説
使用した正規表現パターン ^[0-9]+\.[0-9]+(\.[0-9]+)* の各要素の意味は以下の通りです。
^:文字列の先頭を表します[0-9]+:1つ以上の数字にマッチします\.:ドット(.)そのものにマッチします(正規表現では特殊文字のためエスケープが必要です)(\.[0-9]+)*:「ドット+数字」の組み合わせが0回以上繰り返されることを表します
このパターンを適用することで、「2.s6.9」のように数字以外の文字(この場合は「s」)を含むレコードは除外され、「1.0.0」や「1.5.0」のような正しいバージョン形式のレコードのみが取得されます。バージョン情報のデータクリーニングやバリデーションなど、実務のさまざまな場面で活用できるテクニックです。
-
MySQLのREGEXPでアルファベットを含むレコードのみを抽出する方法|数字のみのレコードを除外
MySQLのREGEXPで文字を含むレコードのみを表示する方法MySQLでは、文字列と数値が混在するカラムから、アルファベットを含むレコードだけを抽出し、数字のみのレコードを除外したいケースがあります。このような場合には、REGEXP演算子を使用すると簡単に実現できます。基本構文REGEXPを使った基本的な構文は以下の通りです。select yourColumnName from yourTableName where yourColumnName REGEXP [a-zA-Z];サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table d
-
MySQLのREGEXPで特定の数値で始まる文字列+数値のレコードを取得する方法
REGEXPを使った特定の数値で始まるレコードの取得方法MySQLでは、REGEXP演算子(正規表現)を使用することで、特定の数値で始まる文字列と数値が混在したレコードを簡単に抽出できます。基本的な構文は以下の通りです。Select yourColumnName1,yourColumnName2 from yourTableName where yourColumnName2 REGEXP ^yourStringValue[yourNumericValue];サンプルテーブルの作成まずは動作確認のためのテーブルを作成しましょう。mysql> create table demo45 -&g