SQL

【SQL】SELECT LIKE句の使い方

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)

よろしければ記事の評価をお願いします

© 2021 ITを分かりやすく解説