MySQLで特定の文字や数値で終わる列の値を抽出する方法(LIKE句の使い方)
MySQLで特定の文字や数値で終わる列の値を取得したい場合、LIKE演算子とワイルドカード「%」を組み合わせると簡単に実現できます。この記事では、実際のテーブル作成からデータ抽出までの手順を順番に解説します。
1. サンプルテーブルの作成
まず、数値型のカラムを持つテーブルを作成します。
mysql> create table DemoTable
(
Number int
);
Query OK, 0 rows affected (0.80 sec)
2. テストデータの挿入
INSERTコマンドを使って、いくつかのレコードをテーブルに追加します。
mysql> insert into DemoTable values(189); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(178); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(876); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable values(784); Query OK, 1 row affected (0.23 sec) mysql> insert into DemoTable values(988); Query OK, 1 row affected (0.23 sec)
3. 登録済みレコードの確認
SELECTステートメントで、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、次のような結果が出力されます。
+--------+ | Number | +--------+ | 189 | | 178 | | 876 | | 784 | | 988 | +--------+ 5 rows in set (0.00 sec)
4. 特定の数値で終わる値を抽出するクエリ
ここが本題です。特定の文字や数値で終わる列の値を選択するには、LIKE '%8'のように、パターンの先頭にワイルドカード「%」を指定します。今回は「8で終わる値」に絞り込んでみます。
mysql> select *from DemoTable where Number LIKE '%8';
実行結果は以下のとおりです。
+--------+ | Number | +--------+ | 178 | | 988 | +--------+ 2 rows in set (0.00 sec)
ポイント解説
LIKE '%8'における「%」は任意の0文字以上の文字列を表すワイルドカードです。末尾に「8」を置くことで、「8で終わるすべての値」にマッチします。逆に「8で始まる値」を取得したい場合はLIKE '8%'、「途中に8を含む値」ならLIKE '%8%'と記述します。なお、数値型のカラムに対してLIKEを使用する場合、内部的には文字列として比較されるため、大量データを扱う際はインデックスが効きにくくなる点に注意してください。パフォーマンスが重要なケースでは、数値の計算(例:Number % 10 = 8)による絞り込みも検討するとよいでしょう。
-
MySQLで英字と数字が混在する列の値を正しくソートする方法
MySQLでは、英字と数字が混在するデータ(例:「J23」「C13」など)が格納された列を単純にORDER BY句でソートすると、すべて文字列として扱われるため、意図した通りの順序にならないことがあります。本記事では、LEFT関数・SUBSTR関数・CAST関数を組み合わせて、文字部分と数値部分をそれぞれ正しく並べ替える方法を、実際のSQL例とともに解説します。 サンプルテーブルの作成 まず、ソート対象となるテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> Code varchar(20) ->
-
MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法
はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実