文字データの選び方(CSVファイルをADOで扱う⑭)

CSVファイルをADOで扱う連載の14回目です。前回の記事はこちらになります。 hirocom777.hatenadiary.org

文字データの選び方

前回は、BETWEENINを使ったデータの選択方法をご紹介しました。

f:id:HiroCom777:20211011152353j:plain

今回はLIKEを使った文字データの選択方法をご紹介します。

今回もSQLを指定してCSVファイルを確認できるツール(CSV_ReaderSQL)を使います。ツールは以下からダウンロードしてください。

CSV_ReaderSQL110.zip - Google ドライブ

今までと同じようにCSV_ReaderSQLで操作対象のファイル(Test.csv)があるフォルダーを指定しておきましょう。'Test.csv'の内容は以下の様になっているものとします。

"氏名","所属部署","年齢"
"大山洋子","営業1課","25"
"山田太郎","工務4課","32"
"小田京子","営業3課","22"
"秋山昇","工務3課","45"
"大木みすず","営業2課","28"
"一ノ瀬恵美","工務1課","31"
"高橋浩二","基礎開発2課","33"
"鈴木康夫","基礎開発1課","38"

LIKEを使う

LIKEを使うと色々な文字列の絞込みができます。表記方法は以下の通りです。

文字列式 LIKE 抽出条件

抽出条件は文字列で表しますが、以下の文字は特別な意味を持ちます。

文字 説明
_ 任意の1文字
% 0文字以上の文字
[charlist] charlistに含まれる全角または半角の1文字
[!charlist] charlistに含まれない全角または半角の1文字

それでは色々な選択方法を見ていきましょう。所属部署が営業の人だけを選択してみましょう。SQLコマンド欄に以下を入力して実行ボタンを押してみてください。

   SELECT * FROM [Test.csv] WHERE 所属部署 LIKE '営業_課'

結果は以下の様になりました。"_"は任意の1文字なので営業の人すべてが表示されています。

氏名 所属部署 年齢
大山洋子 営業1課 25
小田京子 営業3課 22
大木みすず 営業2課 28

それでは、所属部署が1課の人を選択する場合はどうでしょう。以下のSQLで選択できます。

   SELECT * FROM [Test.csv] WHERE 所属部署 LIKE '%1課'

結果は以下の様になりました。"%"は0文字以上の文字なので1課の人すべてが表示されています。

氏名 所属部署 年齢
大山洋子 営業1課 25
一ノ瀬恵美 工務1課 31
鈴木康夫 基礎開発1課 38

次に、所属部署が営業1課か営業2課の人だ選択する場合です。前回ご紹介したINでも可能ですが、以下の様にSQLを記述する事もできます。

   SELECT * FROM [Test.csv] WHERE 所属部署 LIKE '営業[12]課'

結果は以下の様になりました。"[]"の中は3文字以上でも可能です。

氏名 所属部署 年齢
大山洋子 営業1課 25
大木みすず 営業2課 28

また、"[]"の中の文字列の先頭に "!" をつけると否定([]の中の文字を含まない)の意味になります。"%"と合わせて所属部署が1課と2課以外の人を選択するには以下の様にSQLを記述します。

   SELECT * FROM [Test.csv] WHERE 所属部署 LIKE '%[!12]課'

結果は以下の様になります。

氏名 所属部署 年齢
山田太郎 工務4課 32
小田京子 営業3課 22
秋山昇 工務3課 45

また、LIKEの代わりにNOT LIKEを使うことで否定の条件を設定できます。以下のSQLでも同じ結果を得ることができます。

   SELECT * FROM [Test.csv] WHERE 所属部署 NOT LIKE '%[12]課'

LIKEを使うときの注意事項

お気づきの方もいらっしゃると思いますが、VBA自体にもLIKEを使った文字の選択を行う機能があります。しかしながら、抽出条件に使用できる文字が多少異なりますので注意が必要です。(任意の1文字はVBAでは"?"、ADOでは"_"。0文字以上の文字はVBAでは"*"、ADOでは"%"。)また、LIKEは処理に時間がかかります。大きなデータでの乱用は避けましょう。

次回は並べ替え

いかがでしょうか。LIKEを使えば文字データを柔軟に検索できますね!!次回は並べ替えです。読み込んだ結果を並べ替えてから表示できると便利ですよね。お楽しみに!!

hirocom777.hatenadiary.org

CSVファイルをADOで扱う連載記事はコチラからどうぞ