MySQLで%ワイルドカードを正しく使う方法|LIKE演算子によるパターン検索の基本
MySQLの%ワイルドカードとは
MySQLであいまい検索(パターンマッチング)を行う際には、LIKE演算子と%ワイルドカードを組み合わせて使用します。%は「0文字以上の任意の文字列」にマッチするワイルドカードで、前方一致・部分一致など、柔軟な条件でのデータ抽出が可能になります。
基本構文は以下のとおりです。
select *from yourTableName where yourColumName Like 'condition%';
サンプルテーブルの作成
実際の動きを確認するため、まずはテスト用のテーブルを作成しましょう。
mysql> create table SearchDemo -> ( -> Name varchar(100), -> LoginId varchar(100) -> ); Query OK, 0 rows affected (1.15 sec)
テストデータの挿入
次に、INSERT文を使っていくつかのレコードを登録します。
mysql> insert into SearchDemo values('John','1_1');
Query OK, 1 row affected (0.19 sec)
mysql> insert into SearchDemo values('Johnson','1_2');
Query OK, 1 row affected (0.19 sec)
mysql> insert into SearchDemo values('Carol','2_1');
Query OK, 1 row affected (0.12 sec)
mysql> insert into SearchDemo values('Bob','11_1');
Query OK, 1 row affected (0.19 sec)
mysql> insert into SearchDemo values('Sam','11_2');
Query OK, 1 row affected (0.25 sec)
mysql> insert into SearchDemo values('Mike','21_1');
Query OK, 1 row affected (0.22 sec)登録データの確認
SELECT文で全件を表示し、データが正しく登録されているか確認します。
mysql> select *from SearchDemo;
実行結果は以下のとおりです。
+---------+---------+ | Name | LoginId | +---------+---------+ | John | 1_1 | | Johnson | 1_2 | | Carol | 2_1 | | Bob | 11_1 | | Sam | 11_2 | | Mike | 21_1 | +---------+---------+ 6 rows in set (0.00 sec)
%ワイルドカードを使った検索例
%は「0文字、1文字、あるいは複数の任意の文字」にマッチするワイルドカードです。たとえば、LoginIdが「2」で始まるレコードだけを抽出したい場合は、次のようにクエリを記述します。
mysql> select *from SearchDemo -> where LoginId Like '2%';
実行結果:
+-------+---------+ | Name | LoginId | +-------+---------+ | Carol | 2_1 | | Mike | 21_1 | +-------+---------+ 2 rows in set (0.00 sec)
このように「2%」と指定することで、「2」から始まるすべてのLoginId(2_1や21_1など)が抽出されました。条件の位置を変えれば、後方一致('%2')や部分一致('%2%')の検索にも同じ要領で対応できます。なお、任意の1文字にマッチさせたい場合は「_(アンダースコア)」ワイルドカードを使うと、より精密なパターン検索が可能です。
-
MySQLクエリでCASE条件を使ってカウントする方法
MySQLでは、CASE WHENを活用し、COUNT()関数の中にCASE条件を設定することで、特定の条件に一致するレコードだけを数えることができます。この仕組みが成り立つのは、COUNT()関数がNULL値を無視するためです。条件に合わない場合にNULLを返すことで、そのレコードはカウント対象から除外されます。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。 ); Query OK, 0 rows affected (0.61 sec)2. レコードの挿入続いて、insertコマンドを使ってテーブルにデータを登録します。mysql> insert into D
-
MySQLストアドプロシージャにおけるDELIMITERの正しい使い方を徹底解説
DELIMITERとは?なぜ必要なのかMySQLクライアントは、デフォルトでセミコロン(;)を文の終端記号として扱います。しかし、ストアドプロシージャの本体には複数のSQL文が含まれ、それぞれがセミコロンで終わるため、そのまま定義すると途中で構文解析が中断されてしまいます。そこで、DELIMITERコマンドを使って、一時的に区切り文字を別の記号(例://)に変更する必要があります。これにより、プロシージャ全体をひとつのまとまりとして登録できるようになります。DELIMITERの正しい記述方法基本的な書き方は以下の通りです。DELIMITER //CREATE PROCEDURE yourSto