文字の変換(CSVファイルをADOで扱う⑧)

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

hirocom777.hatenadiary.org

文字の変換

 前回は、SQLを指定してCSVファイルを確認できるツール(CSV_ReaderSQL)で読込と同時に計算してみました。これができると色々なことに応用できますよね。

f:id:HiroCom777:20210725124836j:plain

今回は文字データの変換です。文字データも読込と同時に変換できたりすると便利です。ツールは以下からダウンロードしてください。

CSV_ReaderSQL110.zip - Google ドライブ

名簿のデータを変換する

今回は、以下の名簿データの表記を変換してみようと思います。ファイル名は'NameList.csv'としましょう。Nameの所が何だか書き方がバラバラですね。

"ID","Name","Age"
"1","Tom","25"
"2","Bob","18"
"3","MARK","30"

この表のNameのデータ表記形式を整理していきたいと思います。

文字形式を変換する

まずは全角表記を半角にしたいと思います。今までと同じようにCSV_ReaderSQLで'NameList.csv'があるフォルダーを指定して、SQLコマンド欄に以下を入力して実行ボタンを押します。

  SELECT ID,STRCONV(Name,8) As Name,Age FROM [NameList.csv]

結果は・・・

ID Name Age
1 Tom 25
2 Bob 18
3 MARK 30

ちゃんと半角になってますね!!でもあともうちょっと。先頭は大文字、後は小文字という風に表記を統一したいです。今度はSQLコマンド欄を以下の様にして実行してみましょう。

  SELECT ID,STRCONV(Name,11) AS Name,Age FROM [NameList.csv]

結果は・・・

ID Name Age
1 Tom 25
2 Bob 18
3 Mark 30

これで完璧です。

STRCONVの使い方

この様にSTRCONVは文字列の変換が行えます。表記方法は以下の通りです。

  STRCONV(文字列式,変換方法) 

変換方法は整数値で表します。また、定数で指定する事もできます。以下の表をご確認ください。

定数 説明
vbUpperCase 1 文字列を大文字に変換します。
vbLowerCase 2 文字列を小文字に変換します。
vbProperCase 3 文字列内の各単語の先頭の文字を大文字に変換します。
vbWide 4 文字列内の半角文字(1バイト)を全角文字(2バイト)に変換します。
vbNarrow 8 文字列内の全角文字(2バイト)を半角文字(1バイト)に変換します。
vbKatakana 16 文字列内のひらがなをカタカナに変換します。
vbHiragana 32 文字列内のカタカナをひらがなに変換します。
vbUnicode 64 システムの既定のコードをUnicodeに変換します。
vbFromUnicode 128 Unicodeからシステムの既定のコードに変換します。

複数の処理を指定する場合は、組み合わせをする処理を足した値を指定します。今回の処理の場合、半角文字に変換したうえで先頭の文字のみ大文字としたのでvbNarrow + vbProperCase = 11 となります。当然ですが、相反する処理(vbWideとvbNarrow、vbKatakanaとvbHiraganaなど)は同時に指定できません。

ここまでの説明でお気づきの方もいらっしゃると思いますが、VBAのStrConv関数とほぼ動作が同じです。SQLで記述してしまえば読み込んだ後に処理をしなくて済むので便利ですね。

また、単純に大文字、小文字に変換するだけならばUCASE,LCASEを使った方が引数が少なくてシンプルです。表記方法は以下の通りです。 大文字にする場合は

  UCASE(文字列式) 

小文字にする場合は

  LCASE(文字列式) 

となります。こちらもVBAのUcase,Lcase関数と同じです。

次回も文字データ

 今回は、文字データの変換についてご紹介しました。前回の計算と合わせて使えば効果バツグンですよ!! 実はこれ以外にも文字データを扱う仕組みが色々あります。次回ご紹介しますので、お楽しみに!!

hirocom777.hatenadiary.org

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