目次
SELECT LIKE句の基本構文
SQLのSELECTでLIKE句を使用すると、対象の列に対して文字列検索ができます。
LIKE句の基本構文
SELECT 列名 FROM テーブル名 WHERE 列名 LIKE '検索文字';
LIKE句で部分一致検索を行うには、次のワイルドカードを使用します。
ワイルドカード | 説明 |
% | 0文字以上の任意の文字列 |
_ | 任意の1文字 |
本記事では、下記の「userテーブル」に次のようなデータが格納されている前提で説明しています。
【userテーブル】
ID (id) | 名前 (name) | 住所 (address) | 年齢 (age) |
202000001 | 鈴木一郎 | 東京都渋谷区 | 44 |
202000002 | 佐藤次郎 | 大阪府大阪市 | 32 |
202000003 | 田中三郎 | 北海道札幌市 | 24 |
202000004 | 伊藤四郎 | 沖縄県那覇市 | 22 |
202000005 | 斎藤五郎 | 東京都品川区 | 55 |
スポンサーリンク
任意の文字列(%)によるLIKE句の検索
前方一致で検索する
SELECT文の条件に「LIKE 列名 '値%'」とすると、前方一致で検索できます。
■前方一致 ※住所が「東京都~」のデータを抽出
SELECT * FROM user WHERE address LIKE '東京都%';
■実行結果
+-----------+----------+--------------+------+
| id | name | address | age |
+-----------+----------+--------------+------+
| 202000001 | 鈴木一郎 | 東京都渋谷区 | 44 |
| 202000005 | 斎藤五郎 | 東京都品川区 | 55 |
+-----------+----------+--------------+------+
2 rows in set (0.00 sec)
後方一致で検索する
SELECT文の条件に「LIKE 列名 '%値'」とすると、前方一致で検索できます。
■後方一致 ※住所が「~市」のデータを抽出
SELECT * FROM user WHERE address LIKE '%市';
■実行結果
+-----------+----------+--------------+------+
| id | name | address | age |
+-----------+----------+--------------+------+
| 202000002 | 佐藤次郎 | 大阪府大阪市 | 32 |
| 202000003 | 田中三郎 | 北海道札幌市 | 24 |
| 202000004 | 伊藤四郎 | 沖縄県那覇市 | 22 |
+-----------+----------+--------------+------+
3 rows in set (0.00 sec)
部分一致で検索する
SELECT文の条件に「LIKE 列名 '%値%'」とすると、部分一致で検索できます。
■部分一致 ※住所が「~県~」のデータを抽出
SELECT * FROM user WHERE address LIKE '%県%';
■実行結果
+-----------+----------+--------------+------+
| id | name | address | age |
+-----------+----------+--------------+------+
| 202000004 | 伊藤四郎 | 沖縄県那覇市 | 22 |
+-----------+----------+--------------+------+
1 row in set (0.00 sec)
任意の1文字(_)によるLIKE句の検索
アンダースコア(_)は任意の1文字をあらわします。
■任意の1文字 ※年齢が「20」代のデータを抽出
SELECT * FROM user WHERE age LIKE '2_';
■実行結果
+-----------+----------+--------------+------+
| id | name | address | age |
+-----------+----------+--------------+------+
| 202000003 | 田中三郎 | 北海道札幌市 | 24 |
| 202000004 | 伊藤四郎 | 沖縄県那覇市 | 22 |
+-----------+----------+--------------+------+
2 rows in set (0.00 sec)
LIKEの否定文
SELECT文の条件に「NOT LIKE 列名 '値'」とすると、LIKEの否定で検索できます。
■LIKEの否定 ※住所が「~県~」以外のデータを抽出
SELECT * FROM user WHERE address NOT LIKE '%県%';
■実行結果
+-----------+----------+--------------+------+
| id | name | address | age |
+-----------+----------+--------------+------+
| 202000001 | 鈴木一郎 | 東京都渋谷区 | 44 |
| 202000002 | 佐藤次郎 | 大阪府大阪市 | 32 |
| 202000003 | 田中三郎 | 北海道札幌市 | 24 |
| 202000005 | 斎藤五郎 | 東京都品川区 | 55 |
+-----------+----------+--------------+------+
4 rows in set (0.00 sec)
helpful
この記事は役に立ちましたか?