MySQLのREGEXPで6〜10の整数に一致させる方法
MySQLで特定の範囲(たとえば6から10)の整数に一致するレコードを取得したい場合、最もシンプルなのはBETWEEN演算子を使う方法です。基本の構文は以下の通りです。
SELECT *FROM yourTableName WHERE yourColumnName BETWEEN 6 AND 10;
また、正規表現(REGEXP)を使って同じ条件に一致させることもできます。その構文は次のようになります。
SELECT *FROM yourTableName WHERE yourColumnName REGEXP '10|[6-9]';
この正規表現は「10」または「6〜9のいずれか1桁」に一致することを意味します。両方の構文の動きを確認するために、まずサンプル用のテーブルを作成しましょう。テーブル作成クエリは以下の通りです。
mysql> create table RegularExpressionDemo
-> (
-> Id int
-> );
Query OK, 0 rows affected (1.11 sec)
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into RegularExpressionDemo values(1);
Query OK, 1 row affected (0.16 sec)
mysql> insert into RegularExpressionDemo values(2);
Query OK, 1 row affected (0.13 sec)
mysql> insert into RegularExpressionDemo values(3);
Query OK, 1 row affected (0.17 sec)
mysql> insert into RegularExpressionDemo values(4);
Query OK, 1 row affected (0.14 sec)
mysql> insert into RegularExpressionDemo values(5);
Query OK, 1 row affected (0.10 sec)
mysql> insert into RegularExpressionDemo values(6);
Query OK, 1 row affected (0.24 sec)
mysql> insert into RegularExpressionDemo values(7);
Query OK, 1 row affected (0.10 sec)
mysql> insert into RegularExpressionDemo values(8);
Query OK, 1 row affected (0.08 sec)
mysql> insert into RegularExpressionDemo values(9);
Query OK, 1 row affected (0.22 sec)
mysql> insert into RegularExpressionDemo values(10);
Query OK, 1 row affected (0.23 sec)
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from RegularExpressionDemo;
実行結果は以下の通りです。
+------+
| Id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+------+
10 rows in set (0.00 sec)
それでは、整数6から10に一致するレコードを取得するクエリを見ていきましょう。
ケース1:BETWEEN演算子を使う方法
BETWEEN演算子を使用すると、指定した範囲内の値を簡単に抽出できます。クエリは以下の通りです。
mysql> select *from RegularExpressionDemo where Id between 6 and 10;
実行結果は以下の通りです。
+------+
| Id |
+------+
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+------+
5 rows in set (0.00 sec)
ケース2:REGEXPを使う方法
続いて、REGEXPを使って整数6から10に一致させるクエリです。
mysql> select *from RegularExpressionDemo where Id REGEXP '10|[6-9]';
実行結果は以下の通りです。
+------+
| Id |
+------+
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+------+
5 rows in set (0.01 sec)
どちらの方法でも同じ結果が得られます。数値の範囲検索であればBETWEENの方が直感的でパフォーマンス面でも有利ですが、文字列として格納されたデータや複雑なパターンマッチングが必要なケースではREGEXPが有効です。用途に応じて使い分けるとよいでしょう。
-
MySQLのSELECT文で正規表現マッチングは可能?REGEXP演算子の使い方を実例で解説
はい、MySQLではSELECT文の中で正規表現(Regex)によるマッチングを行うことができます。WHERE句と組み合わせてregexpを使用することで、特定のパターンに一致するレコードだけを柔軟に抽出できます。基本構文正規表現を使ったSELECT文の基本的な書き方は以下の通りです。select カラム名 from テーブル名 where カラム名 regexp ^値;ここで使用している「^」は、文字列の先頭を意味する正規表現のメタ文字です。これにより、「指定した値で始まる」レコードを検索できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> crea
-
MySQLクエリの入力方法|基本ルールから複数行クエリまで解説
MySQLクエリの入力方法コンソールでクエリを入力する前に、まずサーバーに正しく接続できているかを確認することが重要です。以下のクエリを実行すると、使用中のサーバーのバージョン番号と現在の日付が表示されます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント:関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つまり、「version()」「Version()」「vERsion()」など、いずれも同じ意味として処理されます。「CURRENT_DATE」についても同様です。MySQLクエリ実行時の基本ルールSQLクエリの