ACCESSの文字列の扱い〜便利といえば便利だけれど、、
今、猛然とACCESSに取り組んでいます。
しかし、MS-ACCESSのデータの取り扱い方のクセで少しチェックチェックに労力を費やされています。
どんなことかというと、文字列をSQLで処理するときにアルファベットの大文字と小文字、日本語だとひらがなとカタカナをきちんと同一のデータとして処理してくれるのです。
一見便利じゃん、と思われるこの機能。じつは意外な落とし穴につながります。現在扱っているのが複数のデータを1フィールドに収めたもの。例えば、アンケートなどで、
設問:あなたの知っているFIFAチャンピオンリーグに出場しているサッカーチームを最大5つお知らせください。
となっており、
解答欄:
Ans1.「 」Ans2.「 」Ans.3「 」Ans.4「 」Ans.5「 」
となっていると、1つしか回答しない人、5つとも回答する人が出てきます。
回答数が最大5つくらいであれば、データを格納するのに5フィールド設けておけばいいのですが、時には回答数=無制限、であったり回答数=50なんてこともあるわけです。
そうした場合、どのような形でデータを収録するかというと、
,"ans1,ans2,ans3,ans4,..................,ans50",
のように"(ダブルクォーテーション)などでフィールドを区切り、1フィールドの中で,を使うなどして格納します。
このようなデータの場合、
- "ans1"や"ans2"のように細分化されたデータ
- "ans1,ans2,ans3,ans4,..................,ans50"というように1フィールドに収録されたデータ
を混合して用いることがあります。
普通、数理的・統計的処理をするなら細分化したデータしか意味がないと思われるかもしれませんが、目で見てする処理を併用する場合、50もフィールドがあればスプレッドシートで扱おうとするとあまりにフィールド数が多すぎて、逆に扱いづらくなります。
しかも、大文字小文字やひらがなカタカナを同一データとして扱うのは、あくまでもSQLなどによって処理するときだけ。つまり、フィールドをただ細分化するだけでは別のデータとして存在するとみなされ、SQLで処理する際に複数に分けたフィールドを改めて結合して処理(カウントするなど)すると、あっさり同一データとして扱われます。
つまり、各フィールドを個別に処理したものを足し上げた結果と、フィールドを連結して一度に処理した結果が異なるわけです。
これをACCESS上で避けるすべはなく、完全に整合性を取れたデータにしようと思ったら、個別処理の足し上げと結合処理とで2つクエリを書き、比較をした上で問題となる箇所を1つ1つつぶしていくしかありません。
というわけで、データクリーニングにかなりの労力を割かなければならなくなります。この問題に対する対処、誰かいい方法をしりませんか???