MySQLで文字列の末尾が特定の値(x)と一致するレコードを抽出する方法
MySQLで「文字列の末尾が特定の値(例えば '10' や '15' など)と一致するレコード」を抽出したい場合は、LIKE演算子とワイルドカード(%)を組み合わせることで簡単に実現できます。パターンの先頭に % を付けることで、「任意の文字列の後に指定した文字列が続く」という条件を表現できます。
サンプルテーブルの作成
まず、検証用のテーブルを作成しましょう。
mysql> create table DemoTable
(
ClientId varchar(20)
);
Query OK, 0 rows affected (0.68 sec)
テストデータの挿入
INSERTコマンドを使ってレコードを挿入します。
mysql> insert into DemoTable values('CLI-101');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('CLI-110');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('CLI-201');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('CLI-210');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('CLI-502');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('CLI-1010');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('CLI-1012');
Query OK, 1 row affected (0.15 sec)
登録済みの全レコードを確認する
SELECT文ですべてのレコードを表示してみます。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+----------+ | ClientId | +----------+ | CLI-101 | | CLI-110 | | CLI-201 | | CLI-210 | | CLI-502 | | CLI-1010 | | CLI-1012 | +----------+ 7 rows in set (0.00 sec)
末尾が「10」または「12」のレコードを抽出するクエリ
ここからが本題です。文字列の末尾が「10」または「12」であるレコードだけを抽出するには、次のようにLIKE句に %10、%12 を指定します。
mysql> select *from DemoTable where ClientId like '%10' or ClientId like '%12';
実行結果は以下の通りです。
+----------+ | ClientId | +----------+ | CLI-110 | | CLI-210 | | CLI-1010 | | CLI-1012 | +----------+ 4 rows in set (0.00 sec)
解説:なぜこの方法が機能するのか
% は「0文字以上の任意の文字列」にマッチするワイルドカードです。'%10' と指定することで、どんな文字列で始まっていても、最後が「10」で終わる値すべてに一致します。そのため、末尾が「10」または「12」である4件のレコードのみが抽出されました。
補足:REGEXPを使った代替方法
条件が複雑になる場合は、正規表現を使うREGEXPも便利です。上記と同じ結果は、以下のクエリでも取得できます。
mysql> select *from DemoTable where ClientId regexp '(10|12)$';
$ は「文字列の末尾」を意味するメタ文字です。複数の末尾パターンをまとめて指定したい場合などは、REGEXPの方が簡潔に書けることがあります。
-
MySQLで文字列から部分文字列を抽出する方法|SUBSTRING関数の使い方を徹底解説
MySQLのSUBSTRING()関数とはMySQLでは、SUBSTRING()関数を使うことで、文字列から任意の部分文字列(サブストリング)を抽出できます。この関数は、指定した開始位置から、指定した長さの部分文字列を返すのが基本的な動作です。SUBSTRING()関数には、以下の4つの構文形式があります。SUBSTRING(str, pos)SUBSTRING(str FROM pos)SUBSTRING(str, pos, len)SUBSTRING(str FROM pos FOR len)各形式の違いと動作のポイント引数lenを指定しない形式では、文字列strのpos番目の位置から始ま
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected