MySQLで数値のみの行を抽出するREGEXPクエリの使い方
文字列と数字が混在するデータの中から、数値だけで構成された行だけを取り出したい場合、MySQLのREGEXP演算子を使うのが便利です。正規表現パターン「^[0-9]+$」を指定することで、先頭から末尾まですべてが0〜9の数字で構成されている行のみを絞り込むことができます。
サンプルテーブルの作成
まず、検証用のテーブルを作成します。
mysql> create table DemoTable -> ( -> StudentId varchar(100) -> ); Query OK, 0 rows affected (0.51 sec)
レコードの挿入
次に、insertコマンドでいくつかのレコードを挿入します。ここでは、英字と数字が混ざったデータやハイフンを含むデータ、純粋な数字のみのデータなど、さまざまなパターンを用意しています。
mysql> insert into DemoTable values('John74747');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('8494575Carol');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('985755645');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Carol-9032');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('101');
Query OK, 1 row affected (0.17 sec)
全レコードの確認
select文でテーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
出力結果
+--------------+ | StudentId | +--------------+ | John74747 | | 8494575Carol | | 985755645 | | Carol-9032 | | 101 | +--------------+ 5 rows in set (0.00 sec)
数値のみの行を返すクエリ
以下が、数値だけで構成された行のみを返すクエリです。WHERE句の中でREGEXP演算子に正規表現パターンを渡します。
mysql> select *from DemoTable where StudentId REGEXP '^[0-9]+$';
出力結果
+-----------+ | StudentId | +-----------+ | 985755645 | | 101 | +-----------+ 2 rows in set (0.17 sec)
正規表現パターンの解説
使用した正規表現「^[0-9]+$」の各要素は、次のような意味を持っています。
- ^:文字列の先頭を表します
- [0-9]:0から9までのいずれか1文字の数字に一致します
- +:直前のパターンが1回以上繰り返されることを意味します
- $:文字列の末尾を表します
このパターンにより、「John74747」や「8494575Carol」、「Carol-9032」のように英字や記号を含む行はすべて除外され、「985755645」と「101」のような純粋な数値の行だけが結果として返されます。なお、小数点やマイナス符号を含む数値も対象にしたい場合は、パターンを「^-?[0-9]+(\.[0-9]+)?$」のように拡張することで対応できます。
-
MySQLで文字列の先頭15文字だけを表示するクエリの書き方
MySQLで文字列の先頭(左側)から指定した文字数だけを取り出すには、LEFT()関数を使用します。第1引数に対象の文字列、第2引数に取得したい文字数を指定するだけで、手軽に部分文字列を抽出できます。 この記事では、テーブルに登録されたタイトルの先頭15文字だけを表示する方法を、実際のSQLと実行結果付きで順を追って解説します。 1. サンプルテーブルを作成する まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable -> ( &nbs
-
MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方
MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829 ( Name varchar(