Accessのクエリで、文字列のバイト数をカウントしたい。
Accessのクエリで、文字列のバイト数をカウントする方法です。 半角で入力して欲しいフィールドに、全角文字が無いかを探す際などに使用できます。 文字列のバイト数をカウントする、と聞くと関数に慣れている方は、LenB関数を思い浮かべると思います。 実際、LenB関数は、文字列をバイト単位で数える関数なのですが、Accessのクエリーで実行しますと、半角・全角・数字・英字など、何を対象にしても1文字が2バイトと返ってきます。 これは、Accessのデータ構造に原因がありまして、データをすべてUnicode(ユニコード)で保存することで生じている現象です。 |
|
|
|
【前提知識】 Unicodeでは、半角・全角を問わず、すべて2バイトで表現します。 |
|
|
|
そこで、StrConv関数を用いて、文字列をUnicodeから、システムの既定のコードページ(日本語のWindowsでは、通常はShift-JISになっていると思います。)に変更します。 変更は、「StrConv([対象フィールド],128)」と記載します。 第二引数の「128」が「既定のコードページに変換する」という意味を持ちます。 |
|
|
|
この「StrConv」と「LenB」を組み合わせることで、文字列のバイト数をカウントすることができます。 クエリに、 「バイト数:LenB(StrConv([対象フィールド],128)) と入力して、実行してください。 バイト単位で計測した値が表示されると思います。 |