引き続き where 句の書き方を学習していきましょう。ここでは like 演算子による条件の指定方法を取り上げます。

like 演算子によって、カラムに対して値を文字列パターンで比較できます。ここでいう文字列パターンとはたとえば「先頭がAで始まる文字列」や「Aが含まれる文字列」といったものです。

where 列名 like データ

like 演算子に指定するデータには次の特殊な記号を使って文字列パターンを指定します。

記号 意味
% 任意の文字列にマッチする
_ 任意の1文字にマッチする

like 演算子で利用するこのような記号はワイルドカードとも呼ばれます。

たとえば Aで始まる文字列 を検索条件とする場合は以下のように記述します。

where 列名 like `A%`

また 先頭から2文字目がAである文字列 を検索条件とする場合は以下のように記述します。

where 列名 like `_A%`

Aが含まれる文字列 を検索条件とする場合は以下のように記述します。

where 列名 like `%A%`

% 記号によるパターンマッチング

次のSQLは courses テーブルから title 列の値が PHP で始まるレコードを検索します。

MariaDB [eldb]> select * from courses 
    ->          where title like 'PHP%';
+----+--------------+---------------+-------------+
| id | title        | learning_time | category_id |
+----+--------------+---------------+-------------+
|  1 | PHP Basic    |            30 |           1 |
|  2 | PHP Database |            50 |           1 |
+----+--------------+---------------+-------------+
2 rows in set (0.00 sec)

MariaDB [eldb]> 

_ 記号によるパターンマッチング

次のSQLは courses テーブルから title 列の値の先頭から5文字目が D であるレコードを検索します。

MariaDB [eldb]> select * from courses 
    ->          where title like '____D%';
+----+--------------+---------------+-------------+
| id | title        | learning_time | category_id |
+----+--------------+---------------+-------------+
|  2 | PHP Database |            50 |           1 |
|  4 | Web Design   |            50 |           2 |
+----+--------------+---------------+-------------+
2 rows in set (0.00 sec)

MariaDB [eldb]> 

title 列の5文字目が D のレコードを検索しています。