ExcelでSQLを使う-014: SQL WHERE節の活用-3 INとLIKE
動物のお医者さん 第6章 |
チョビがポスターのモデルにスカウトされた!再び犬ぞりレース出場の日も近い!さて、会社員になったのに、毎日大学に出没する菱沼を尻目に、ハムテルは卒論を仕上げ、獣医師国家試験の勉強に励む毎日である。二階堂も、ネズミと闘い、猫に導かれながら、ハムテルと共に博士課程への進学を決めるのであった。そして、とうとう卒業式を迎える。愛犬・平九郎と離れる清原君を筆頭に、皆、晴れ晴れとした寂しさを感じないではいられなかったー。(同書帯より)
WHERE 節の高度な活用-3
集合: IN
WHERE節のキーワードINに値を列挙することで、その値を持つ列を抽出することができます。
<列名> [NOT] IN (<値1>,<値2>,...<値n)
SELECT * FROM 得意先一覧 WHERE 郵便番号 IN (8010002, 8010003)
上記の例は、郵便番号が 801-0002 と 801-0003 に該当する得意先を選びだします。
SQLツールDSelect関数は、次のようにキーワード IN を使って特定の集合の列を抽出することができます。
? DSelect("SELECT * FROM [得意先台帳$A1:E100] WHERE 郵便番号 IN (8010002, 8010003)",,Chr(13))
1;3;山田 太郎;8010002;香川県;丸亀市
2;4;木下 三郎;8010002;香川県;丸亀市
3;5;津田 淳;8010003;香川県;坂出市
4;6;内田 洋行;8010003;香川県;坂出市
パターン照合: LIKE
WHERE節にキーワード LIKE を使って、特定の文字列を含む行を抽出することができます。
WHERE <文字型列> LIKE '<値>'
<文字型列>には、CHAR型の列の名前を記述し<値>には文字列をシングルクォーテーション(’)で囲んで指定します。<値>の文字列には、次のようなワイルドカード文字列を使うことができます。
% |
0個以上の文字に対応します。 |
_ |
任意の1文字に対応します。 |
[...] |
各カッコ内に指定した文字に対応します。 |
[!...] |
各カッコ内に指定した文字以外に対応します。 |
次に、キーワードLIKEを使ったDSelect関数の例文を幾つか紹介します。
? DSelect("SELECT 氏名, 住所1 FROM [得意先台帳$A1:E100] WHERE 氏名 LIKE '山%'",,Chr(13))
1;山田 太郎;香川県
2;山下 馨;香川県
? DSelect("SELECT 氏名, 住所1 FROM [得意先台帳$A1:E100] WHERE 氏名 LIKE '_下%'",,Chr(13))
1;木下 三郎;香川県
2;山下 馨;香川県
3;大下 宏;香川県
? DSelect("SELECT 氏名, 住所1 FROM [得意先台帳$A1:E100] WHERE 氏名 LIKE '[!山,木,内]%'",,Chr(13))
1;鈴木 一郎;香川県
2;中村 主水;香川県
3;津田 淳;香川県
4;佐野 順次;香川県
5;吉田 宏;香川県
6;大下 宏;香川県
🔶🔶🔶🔶🔶
ハスキー流「SQLリファレンス」も、残すところ2節となりました。
3-3、ORDER BY 節
3-4、複数の表からの検索
これが終われば、いよいよSQLツール《SQLWriter》の活用ノウハウ編になります。今暫く、お付き合いください。