SQL LIKE条件

ORACLEでSQLのLIKE条件を指定するときの書き方を紹介します。

構文

LIKE条件を使うことで、あいまい検索や特定文字の検索ができます。

SELECT 列名 FROM テーブル名 WHERE 列名 LIKE ‘値’;

・ワイルドカード
 あいまい検索や特定文字列の検索を行う際に使います。
 %・・・0文字以上の文字
 _・・・1文字の文字

使用例

・サンプルデータ

顧客番号 担当部門 名前 債権限度額
0001 10 鈴木 1,000,000
0002 20 田中 2,000,000
0003 20 高橋 3,000,000
0004 10 鈴木 4,000,000

・前方一致検索
顧客名が’田’で始まる顧客を検索する場合
SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ WHERE 顧客名 LIKE ‘田%’;

顧客番号 担当部門 名前 債権限度額
0002 20 田中 2,000,000

・後方一致検索
顧客名が’木’で終わる顧客を検索する場合
SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ WHERE 顧客名 LIKE ‘%木’;

顧客番号 担当部門 名前 債権限度額
0001 10 鈴木 1,000,000

・あいまい検索
顧客名に’橋’を含む顧客を検索する場合
SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ WHERE 顧客名 LIKE ‘%橋%’;

顧客番号 担当部門 名前 債権限度額
0001 10 鈴木 1,000,000
0002 20 田中 2,000,000
0003 20 高橋 3,000,000

・二文字目の文字を検索
顧客名の二文字目が’木’となる顧客を検索する場合
SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ WHERE 顧客名 LIKE ‘_木%’;

顧客番号 担当部門 名前 債権限度額
0001 10 鈴木 1,000,000




ワイルドカード文字の検索

あいまい検索や特定文字検索の際にワイルドカードとして扱う文字を、検索条件の文字としたい場合にはESCAPEを使います。

・「_」アンダースコアを含むデータの検索
ESCAPE文字をアンダースコアの直前に持ってきます。
SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ WHERE 顧客名 LIKE ‘%\_%’ ESCAPE ‘\’;

・「%」パーセントを含むデータの検索
ESCAPE文字をパーセントの直前に持ってきます。
SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ WHERE 顧客名 LIKE ‘%\%%’ ESCAPE ‘\’;

NOT LIKE

LIKEの前にNOTを付けることで、指定した条件に一致しないデータを検索できます。
顧客名に’橋’を含まない顧客を検索する場合
SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ WHERE 顧客名 NOT LIKE ‘%橋%’;