ExcelでSQLを使う

エクセルでSQLを使う必須の関数を紹介しします。

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》の活用ノウハウ編になります。今暫く、お付き合いください。