例えば前回の「PREF_NAME = '東京都'」という指定の仕方だと検索できましたが、「PREF_NAME = '東京'」では一致しません。「=」(イコール)の場合は完全に一致しなければならないからです。しかしこれではあまりにも厳密すぎて利用し難いですね。
そこで文字列を抽出条件にする場合は LIKE演算子とワイルドカードを使い「あいまい検索」にすることが多いです。
*MySQLとAccessでは使えるワイルドカードが異なりますが基本は同じです。
今回MySQLに接続するユーザーは「pgtop」ですので、間違えないように気を付けてください。
【1】以下の図を参考にMySQLを開始・接続します。
1.コマンドプロンプトを起動します。
2.「net start mysql」と入力し、「Enterキー」を押します。
3.「mysql -u pgtop -p -b」と入力し、「Enterキー」を押します。
4.パスワードを求められるので「12345」入力し、「Enterキー」を押します。
*「-b」オプションを付けて起動するとビープ音が出なくなります。
【2】以下のSQL文を入力し、使用するデータベースを選択します。
USE SampleDB040;
【3】最初は前回の復習です。以下のSQL文を入力して実行してみましょう。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME = '東京都';
【4】抽出条件に「'東京'」と指定すると1件も表示されません。「=」(イコール)だと完全一致になるからです。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME = '東京';
【5】次は抽出条件にLIKE演算子を使い「'東京_'」と指定します。「_」(半角アンダースコア)を後ろに付けると、あいまい検索になるので1件表示されます。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME LIKE '東京_';
*LIKE演算子は「○○のような」という意味です。
*「_」(半角アンダースコア)は任意の1文字に相当します。
【6】次は抽出条件に「'東_'」と指定します。「 _ 」(半角アンダースコア)は任意の1文字なので、後ろに2文字必要な場合は一致しません。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME LIKE '東_';
【7】次は抽出条件に「'東%'」と指定します。「%」(半角パーセント)は任意の0文字以上の文字列に相当するので、後ろに何文字でも一致します。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME LIKE '東%';
【8】では抽出条件に「'%京%'」と指定するとどうなるか考えてみましょう。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME LIKE '%京%';
ヒント 前後に任意の0文字以上で一致します。
【9】東京都と京都府が表示されました。
予想した通りでしたか?予想通りならかなりコツはつかめたと思います。
【10】以下の場合はどうなるか考えてみましょう。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME LIKE '%京%' OR PREF_NAME LIKE '%長%';
ヒント ORは「または」という意味で、どちらか一方の条件に一致していればよい
【11】「京」または「長」が1文字でも含まれている都道府県が表示されました。
【12】以下の場合はどうなるか考えてみましょう。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME LIKE '%長%' AND PREF_CD >= 40;
ヒント ANDは「かつ」という意味で、両方の条件に一致しなくてはならない。40以降は九州の都道府県。
【13】長崎県が表示されました。長野県は九州ではないので一致しません。
【14】以下の場合はどうなるか考えてみましょう。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME LIKE '%長%' OR PREF_CD >= 40;
ヒント ORは「または」という意味で、どちらか一方の条件に一致していればよい
【15】九州の都道府県に長野県がプラスされています。
【16】以下の図を参考にMySQLを終了・停止します。
1.「exit」と入力し、「Enterキー」を押します。
2.「net stop mysql」と入力し、「Enterキー」を押します。
【17】コマンドプロンプトは閉じてください。
【解説】
(1)「_」(半角アンダースコア)や「%」(半角パーセント)をワイルドカードといいます。
・「_」 任意の1文字
・「%」 0個以上の文字列
「0個以上」というのがポイントで無くてもいいわけです。「任意の1文字」の場合は必ず1文字必要ですので、以下のような場合は京都府は表示されません。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME LIKE '_京%';
(2)論理演算子について
・OR(または) どちらか一方の条件に一致していればよい
・AND(かつ) 両方の条件に一致しなくてはならない