SQL

【SQL】SELECT LIKE句の使い方

2021年1月17日

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