SQL攻略 - Web上でSQLを実行しながらマスターするサイト
ホーム >> SQL攻略 - パターンマッチング(LIKE演算子)

パターンマッチング(LIKE演算子)

文字列のパターンマッチングの方法を学習します

1.LIKE演算子の使い方

--Aという文字を含む従業員名を検索
SELECTENAME
FROMEMP
WHEREENAME LIKE '%A%'
■LIKE演算子の使い方

LIKE演算子はWHERE句で使用します。[カラム名 LIKE 比較文字列] と記述しカラム名と比較文字列のパターンマッチングを行います。

■ワイルドカード

比較文字列に使用可能なワイルドカードは以下の2文字です。

%(パーセント)0文字以上の任意の文字列
_(アンダーバー)1文字の任意の文字

%や_そのものを検索文字列として使用したい場合はESCAPEキーワードを使用します。以下のように記述し、ESCAPEキーワードで?を指定していますが、?_はワイルドカードではないただの_(アンダーバー)として取り扱われます。

WHERE ENAME LIKE '%?_%' ESCAPE '?'

■LIKE演算子の否定

LIKE演算子を否定する場合は、[カラム名 LIKE 比較文字列]のようにLIKE演算子の前にNOTを記述します。

WHERE ENAME NOT LIKE '%A%'

■実習

それでは実習です。1題出題します。


2.パターン検索(LIKE)の過去問題

初級システムアドミニストレータ午前平成13年秋問28
氏名に"三"の文字をもつ社員を"社員"表から検索して,次のような"社員リスト"表を作成する SQL 文中の a に入れるべき適切な字句はどれか。

社員リスト
社員番号氏名課コード内線電話
S02田中三郎K0011001
S05佐藤幸三K0031003
S15森三恵子K0223022
S20鈴木俊三郎K1051105

SELECT 社員番号, 氏名, 課コード, 内線電話, FROM 社員
WHERE [ a ]

氏名 = '三'
氏名 = '%三%'
氏名 LIKE '%三%'
氏名 NOT LIKE '%三%'
正解



解説

三という文字を含んだ氏名の検索を行っています。このような検索はLIKEで行えるので、答えはウです。

これで[パターンマッチング(LIKE演算子)]は終了です。