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

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

REGEXPを使った特定の数値で始まるレコードの取得方法

MySQLでは、REGEXP演算子(正規表現)を使用することで、特定の数値で始まる文字列と数値が混在したレコードを簡単に抽出できます。基本的な構文は以下の通りです。

Select yourColumnName1,yourColumnName2
from yourTableName
where yourColumnName2 REGEXP '^yourStringValue[yourNumericValue]';

サンプルテーブルの作成

まずは動作確認のためのテーブルを作成しましょう。

mysql> create table demo45
-> (
-> id int not null auto_increment primary key,
-> value varchar(50)
-> );
Query OK, 0 rows affected (1.50 sec)

レコードの挿入

次に、INSERT文を使ってレコードを挿入します。ここでは「John500」「John6500」のように、文字列と数値が組み合わさったデータを登録します。

mysql> insert into demo45(value) values('John500');
Query OK, 1 row affected (0.12 sec)
mysql> insert into demo45(value) values('John1500');
Query OK, 1 row affected (0.11 sec)
mysql> insert into demo45(value) values('John5500');
Query OK, 1 row affected (0.42 sec)
mysql> insert into demo45(value) values('John6500');
Query OK, 1 row affected (0.10 sec)
mysql> insert into demo45(value) values('John8600');
Query OK, 1 row affected (0.19 sec)

登録済みレコードの確認

SELECT文を実行して、テーブル内のすべてのレコードを表示してみます。

mysql> select *from demo45;

上記のクエリを実行すると、以下のような出力が得られます。

+----+----------+
| id | value    |
+----+----------+
|  1 | John500  |
|  2 | John1500 |
|  3 | John5500 |
|  4 | John6500 |
|  5 | John8600 |
+----+----------+
5 rows in set (0.00 sec)

特定の数値(5と6)で始まるレコードを抽出するクエリ

それでは本題です。「John」に続く数値が「5」または「6」で始まるレコードのみを取得したい場合は、次のようにクエリを記述します。

ポイントは、パターン「^John」の直後に置かれている文字クラス[56]です。「^」は文字列の先頭を表し、「[56]」は5または6のいずれかにマッチすることを意味します。

mysql> select id,value
-> from demo45
-> where value REGEXP '^John[56]';

このクエリを実行すると、以下の出力が得られます。

+----+----------+
| id | value    |
+----+----------+
|  1 | John500  |
|  3 | John5500 |
|  4 | John6500 |
+----+----------+
3 rows in set (0.00 sec)

ご覧の通り、「John1500」と「John8600」は除外され、条件に合致した3件のレコードだけが取得されました。このようにREGEXPを活用すれば、柔軟なパターンマッチングによるデータ抽出が可能になります。

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

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

  2. PHPで英数字混在の文字列から特定の数字で始まる値を抽出する方法(substr()とstrpos()の活用)

    PHPでは、substr()とstrpos()を組み合わせることで、文字と数字が混在する文字列から、特定の数字で始まる値を簡単に抽出できます。本記事では、その具体的な手順をサンプルコード付きでわかりやすく解説します。抽出対象の文字列例として、以下のような英数字が混在する文字列を想定します。$value = 1045632245555fghjklm67535454663443gfdjkbvc9890000006777743;この文字列から、次のように「989」で始まる値を取り出したいとします。9890000006777743抽出方法:substr() と strpos() の組み合わせ特定の値を