文字列をあいまい検索する「LIKE」の使用
○○が含まれる文字列のデータを出力する・○○で始まる文字列のデータを出力するなど
完全な一致ではなく、あいまいに文字列を検索することを「あいまい検索」と言います。
例えば、名前が「田中」で始まる学生のデータを取得したいだとか、名前に「二」が含まれて
いる学生を取得したい場合に活用することができます。
このあいまい検索を行うにはLIKEを使用します。
LIKEの使用方法
LIKEの使用方法は以下の通りです。
SELECT 列名 FROM 表の名前 WHERE 列名 (NOT) LIKE ’検索文字列’; |
LIKEの文字列検索にはワイルドカードと呼ばれるものを使い、検索文字列がどのように一致
しているかを指定します。
ワイルドカードは以下の2つです。
ワイルドカード | 説明 |
% | 0文字以上の任意の文字列を表す。 |
_ | 1文字の任意の文字列を表す。 |
使用例1:氏名が「田中」で始まる学生情報を取得。
SELECT * FROM 学生 WHERE 氏名 LIKE '田中%';
使用例2:氏名が5文字の学生情報を取得。
SELECT * FROM 学生 WHERE 氏名 LIKE '_____';
ワイルドカードが含まれる文字列のあいまい検索
LIKEで検索文字列に「%」や「_」が含まれる場合は、エスケープ文字を使います。
SELECT 列名 FROM 表の名前 WHERE 列名 (NOT) LIKE ’検索文字列’ ESCAPE ‘エスケープ文字’; |
使用例:氏名の最後に「%」が付く学生を取得(ありえない氏名ですが…)
SELECT * FROM 学生 WHERE 氏名 LIKE '%#%' ESCAPE '#';
↑の例ではエスケープ文字に「#」を指定しています。
この「#」の後にワイルドカードを書くことで、ワイルドカードではなく1つの文字として
認識されます。
エスケープ文字には「#」以外にも好きな文字を使うことができます。