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

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」のような正しいバージョン形式のレコードのみが取得されます。バージョン情報のデータクリーニングやバリデーションなど、実務のさまざまな場面で活用できるテクニックです。

  1. MySQLのREGEXPでアルファベットを含むレコードのみを抽出する方法|数字のみのレコードを除外

    MySQLのREGEXPで文字を含むレコードのみを表示する方法MySQLでは、文字列と数値が混在するカラムから、アルファベットを含むレコードだけを抽出し、数字のみのレコードを除外したいケースがあります。このような場合には、REGEXP演算子を使用すると簡単に実現できます。基本構文REGEXPを使った基本的な構文は以下の通りです。select yourColumnName from yourTableName where yourColumnName REGEXP [a-zA-Z];サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table d

  2. MySQLのREGEXPで特定の数値で始まる文字列+数値のレコードを取得する方法

    REGEXPを使った特定の数値で始まるレコードの取得方法MySQLでは、REGEXP演算子(正規表現)を使用することで、特定の数値で始まる文字列と数値が混在したレコードを簡単に抽出できます。基本的な構文は以下の通りです。Select yourColumnName1,yourColumnName2 from yourTableName where yourColumnName2 REGEXP ^yourStringValue[yourNumericValue];サンプルテーブルの作成まずは動作確認のためのテーブルを作成しましょう。mysql> create table demo45 -&g