【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 '%乳%';】
実行結果は以下の通り。
