記事の内容
概要
パターンマッチングでは、以下のメタ文字を使用して検索をします。
メタ文字 | 説明 |
---|---|
% | 0個以上の任意の文字列 |
_ | 任意の一文字 |
LIKE
LIKEは、特定の文字列パターンに一致するデータを検索するための演算子です。
LIKE
【informationsテーブルの一覧表示】
mysql> SELECT * FROM informations;
+----+---------+
| id | content |
+----+---------+
| 1 | aaa |
| 2 | bbb |
| 3 | BBB |
| 4 | abc |
+----+---------+
4 rows in set (0.00 sec)
【パターマッチング】
mysql> SELECT * FROM informations WHERE content LIKE '%b%';
+----+---------+
| id | content |
+----+---------+
| 2 | bbb |
| 3 | BBB |
| 4 | abc |
+----+---------+
3 rows in set (0.00 sec)
%
このワイルドカードは、「0個以上の任意の文字列」と一致することを意味します。
LIKE ( % )
【informationsテーブルの一覧表示】
mysql> SELECT * FROM informations;
+----+---------+
| id | content |
+----+---------+
| 1 | abc |
| 2 | bcd |
+----+---------+
2 rows in set (0.00 sec)
【パターマッチング(末尾がbc)】
mysql> SELECT * FROM informations WHERE content LIKE '%bc';
+----+---------+
| id | content |
+----+---------+
| 1 | abc |
+----+---------+
1 row in set (0.00 sec)
【パターマッチング(先頭がbc)】
mysql> SELECT * FROM informations WHERE content LIKE 'bc%';
+----+---------+
| id | content |
+----+---------+
| 2 | bcd |
+----+---------+
1 row in set (0.00 sec)
【パターマッチング(部分的にbc)】
mysql> SELECT * FROM informations WHERE content LIKE '%bc%';
+----+---------+
| id | content |
+----+---------+
| 1 | abc |
| 2 | bcd |
+----+---------+
2 rows in set (0.00 sec)
_
このワイルドカードは、文字列の中で特定の位置にある文字を無視して検索する際に役立ちます。
LIKE ( _ )
【usersテーブルの一覧表示】
mysql> SELECT * FROM users;
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | user1 | 10 |
| 2 | user2 | 15 |
| 3 | user3 | 20 |
| 4 | user4 | 25 |
| 5 | user5 | 30 |
+----+-------+------+
5 rows in set (0.00 sec)
【パターマッチング】
mysql> SELECT * FROM users WHERE age LIKE '2_';
+----+-------+------+
| id | name | age |
+----+-------+------+
| 3 | user3 | 20 |
| 4 | user4 | 25 |
+----+-------+------+
2 rows in set (0.00 sec)
【パターマッチング】
mysql> SELECT * FROM users WHERE age LIKE '_5';
+----+-------+------+
| id | name | age |
+----+-------+------+
| 2 | user2 | 15 |
| 4 | user4 | 25 |
+----+-------+------+
2 rows in set (0.00 sec)