【SELECT文について(WHERE句/LIKE演算子)】



このHPはSELECT文(WHERE句/LIKE演算子)についてまとめたものです。



1-1 LIKE演算子


比較対象が文字列の場合、等しい「=」以外に、その文字が含まれるかどうかを調べる「LIKE演算子」が利用できる。LIKE演算子はWHERE句で使用する。基本的な書式は以下の通り。




パターンの部分は、等しいかどうかを調べたい文字を設定する。
例えば、「syain_bloodtype」列が「O」と等しいかどうかを調べたいときは、以下の様に記述する。

【 WHERE syain_bloodtype LIKE 'O'】

LIKE演算子では、「%」と「アンダーバー」の2つの記号を使用して、「パターンマッチング(あいまい検索)」が使用でき、文字列の「部分一致検索」を行うときに使用する。

「部分一致検索」には、大きく分けて

◆前方一致検索
◆後方一致検索
◆中間一致検索

の3種類がある。


◆前方一致検索
前方一致検索とは、検索条件となる文字列が、文字列の最初に位置しているレコードだけ選択される検索方法。LIKE演算子を指定して検索条件の最後に「%」を記載する。





◆後方一致検索
後方一致検索は、検索条件となる文字列が文字列の最後尾にあるレコードだけ選択される検索方法。LIKE演算子を使用し検索文字列の最初に「%」を記述する。





◆中間一致検索
部分一致検索は、検索条件となる文字列が検索対象の文字列の「どこか」に含まれていればレコードが選択される検索方法。LIKE演算子を指定して検索条件の前後に「%」を記載する。





「%」の代わりに「_(アンダーバー)」を使用することもできる。これは「任意の1文字」を表す。







■ワイルドカード


「ワイルドカード」とは、「任意のデータの代用になるもの」という意味。
「%」は「0文字以上の任意の文字列」に、「_(アンダーバー)」は「任意の1文字」を表す。







◆前方一致検索例
それでは、以下の【syainzyoho】というテーブルで、 「syain_mei」の先頭が「s」であるという条件で、「syain_id」、「syain_mei」列を取得してみる。



《「syainzyoho」テーブルから「syain_mei」の先頭が「s」であるレコードだけを抜き出し、「syain_id」、「syain_mei」列だけを表示させるSQL文》

【SELECT syain_id,syain_mei FROM syainzyoho WHERE syain_mei LIKE 's%';】

実行結果は以下の通り。






◆後方一致検索例
以下の【syainzyoho】というテーブルで、 「syain_mei」の末尾が「ko」であるという条件で、「syain_id」、「syain_mei」列を取得してみる。



《「syainzyoho」テーブルから「syain_mei」の末尾が「ko」であるレコードだけを抜き出し、「syain_id」、「syain_mei」列だけを表示させるSQL文》

【SELECT syain_id,syain_mei FROM syainzyoho WHERE syain_mei LIKE '%ko';】

実行結果は以下の通り。






◆中間一致検索例
以下の食品情報を扱う【foodtable】というテーブルで、「food_bunrui」列に「品」という文字があるという条件で、「food_id」、「fod_mei」、「food_bunrui」列を取得してみる。



《「foodtable」テーブルから「food_bunrui」列に「品」という文字があるレコードだけを抜き出し、「food_id」、「fod_mei」、「food_bunrui」列だけを表示させるSQL文》

【SELECT food_id,food_mei,food_bunrui FROM foodtable WHERE food_bunrui LIKE '%品%';】

実行結果は以下の通り。






◆前方一致検索例(_(アンダーバー))

以下の食品情報を扱う【foodtable】というテーブルで、「food_bunrui」列が「3文字」で末尾が「類」という条件で、「food_id」、「fod_mei」、「food_bunrui」列を取得してみる。



《「foodtable」テーブルから「food_bunrui」列が「3文字」で末尾が「類」という条件で、「food_id」、「fod_mei」、「food_bunrui」列をだけを表示させるSQL文》

【SELECT food_id,food_mei,food_bunrui FROM foodtable WHERE food_bunrui LIKE '__類';】

実行結果は以下のとおり。







■NOT LIKE


「一致する」ではなく、「一致しない」という条件で検索をする場合、「〜でない」を意味する「NOT」を置く。「パターンマッチング(あいまい検索)」データを検索する場合は、「LIKE」の前に「NOT」を置いて「NOT LIKE」とすることで検索ができる。


以下の食品情報を扱う【foodtable】というテーブルで、「food_bunrui」列に「乳」という文字列がないという条件で、「food_id」、「fod_mei」、「food_bunrui」列を取得してみる。




《「foodtable」テーブルから「food_bunrui」列に「乳」という文字列がないという条件で、「food_id」、「fod_mei」、「food_bunrui」列をだけを表示させるSQL文》

【SELECT food_id,food_mei,food_bunrui FROM foodtable WHERE food_bunrui NOT LIKE '%乳%';】

実行結果は以下の通り。