MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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文字にマッチさせたい場合は「_(アンダースコア)」ワイルドカードを使うと、より精密なパターン検索が可能です。

  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

  2. MySQLストアドプロシージャにおけるDELIMITERの正しい使い方を徹底解説

    DELIMITERとは?なぜ必要なのかMySQLクライアントは、デフォルトでセミコロン(;)を文の終端記号として扱います。しかし、ストアドプロシージャの本体には複数のSQL文が含まれ、それぞれがセミコロンで終わるため、そのまま定義すると途中で構文解析が中断されてしまいます。そこで、DELIMITERコマンドを使って、一時的に区切り文字を別の記号(例://)に変更する必要があります。これにより、プロシージャ全体をひとつのまとまりとして登録できるようになります。DELIMITERの正しい記述方法基本的な書き方は以下の通りです。DELIMITER //CREATE PROCEDURE yourSto