MySQLで特定の値で始まるレコードを抽出する方法|LIKE演算子の使い方
MySQLで特定の値から始まるレコードを取得するには?
MySQLにおいて、特定の値で始まるレコードを選択したい場合は、LIKE演算子を使用します。LIKE演算子にワイルドカード「%」を組み合わせることで、前方一致による柔軟な文字列検索が可能になります。
この記事では、実際にテーブルを作成し、データを挿入して、LIKE演算子で前方一致検索を行うまでの手順をサンプルコード付きで解説します。
1. サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable690(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserValue varchar(100)
);
Query OK, 0 rows affected (0.56 sec)
2. テーブルへのデータ挿入
INSERTコマンドを使って、複数のレコードを挿入します。
mysql> insert into DemoTable690(UserValue) values('567890');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable690(UserValue) values('789032');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable690(UserValue) values('567342');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable690(UserValue) values('890678');
Query OK, 1 row affected (0.16 sec)
3. 登録済みレコードの確認
SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable690;
実行結果は以下の通りです。
+--------+-----------+ | UserId | UserValue | +--------+-----------+ | 1 | 567890 | | 2 | 789032 | | 3 | 567342 | | 4 | 890678 | +--------+-----------+ 4 rows in set (0.00 sec)
4. LIKE演算子による前方一致検索
それでは、「567」で始まるレコードを抽出するクエリを見ていきましょう。検索パターンの末尾にワイルドカード「%」を付けるのがポイントです。
mysql> select *from DemoTable690 where UserValue LIKE '567%';
実行結果は以下のようになります。
+--------+-----------+ | UserId | UserValue | +--------+-----------+ | 1 | 567890 | | 3 | 567342 | +--------+-----------+ 2 rows in set (0.00 sec)
ワイルドカード「%」の意味
「%」は0文字以上の任意の文字列を表すワイルドカードです。「'567%'」と指定することで、「567」の後にどんな文字が続いていてもマッチします。そのため、「567890」と「567342」の2件が正しく抽出されました。
補足:その他の活用パターン
- '%567' … 「567」で終わるレコードを検索(後方一致)
- '%567%' … 「567」を含むレコードを検索(部分一致)
- '567___' … 「567」で始まり、その後にちょうど3文字続くレコードを検索(「_」は任意の1文字)
まとめ
MySQLで特定の値で始まるレコードを取得するには、WHERE句でLIKE演算子を使い、検索語の後ろに「%」を付けるだけです。前方一致・後方一致・部分一致を使い分けることで、さまざまな条件での文字列検索に対応できます。大量のデータを扱う場合は、インデックスとの相性も考慮すると、より高速な検索が実現できます。
-
MySQLで特定の値より大きいレコードだけを抽出する方法|WHERE句を使った条件指定の基本
MySQLで特定の値以下のレコードを除外するには? MySQLである値を基準に、それより小さいレコードを除外し、大きい値を持つレコードだけを取得したい場合は、WHERE句に比較演算子「>(より大きい)」を組み合わせるのが基本です。 基本構文 SELECT * FROM テーブル名 WHERE カラム名 > 値; この構文により、指定したカラムの値が条件値より大きい行のみが結果セットとして返されます。 実際に試してみよう:サンプルテーブルの作成 まずは動作を確認するためのテーブルを作成します。 mysql> create table demo27 -> ( ->
-
MySQLのREGEXPで特定の数値で始まる文字列+数値のレコードを取得する方法
REGEXPを使った特定の数値で始まるレコードの取得方法MySQLでは、REGEXP演算子(正規表現)を使用することで、特定の数値で始まる文字列と数値が混在したレコードを簡単に抽出できます。基本的な構文は以下の通りです。Select yourColumnName1,yourColumnName2 from yourTableName where yourColumnName2 REGEXP ^yourStringValue[yourNumericValue];サンプルテーブルの作成まずは動作確認のためのテーブルを作成しましょう。mysql> create table demo45 -&g