• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessのクエリで半角円マークが抽出できない)

Accessのクエリで半角円マークが抽出できない

このQ&Aのポイント
  • Windows XP(SP3) 上でAccess 2003 SP3を利用していると、クエリで"\"(半角円マーク)をWhere句に指定した際に、半角・全角とも抽出されてしまう問題が発生します。
  • 回避策として、全角の円マークを除外する方法や、円マークをchr関数を使って指定する方法があります。
  • しかし、どちらの方法でも問題が解決せず、該当するデータが抽出されません。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

> 回避策をご存知であれば教えてください。 Accessのクエリの場合、「全角/半角」の違いだけでなく、 「カタカナ/ひらがな」まで同じものとして扱われてしまいます。 (Excelからインポートした場合など、その機能が重宝する  場合もあるのですが) 確か、設定でこの問題を回避することはできなかったと 記憶していますので、全角/半角の区別が必要な場合、 私は以下のような方法を採っています: Select 番号, 名前 From テーブル1 Where InStr(1, 名前, "\", 0); つまり、第4引数を指定したInStr関数であれば、全/半角 の区別がされることを利用する、ということです。 なお、ヘルプでは「vbBinaryCompare」などの定数が提示 されていますが、これらはVBAでのみ有効で、クエリやマクロ などでは使用できませんのでご注意ください。 (上記のように、「0」「1」などの「値」を指定します) 【今日の蛇足(汗)】 こちらの環境(Access2003/XP)で確認したところ、 今回の事例に限っては「InStr(名前, "\")」としても 抽出可能なようです。 (第1引数および第4引数を省略:詳細はヘルプを参照下さい) これは恐らく、InStr関数の内部処理では、「\」は半角 円マークではなく「バックスラッシュ」として扱われている のではないか・・・と推測します。 (クエリでは確かに「\」は「¥」の半角文字として扱われて  いるのですけれどね・・・) http://okwave.jp/qa/q4114026.html 一応、参考まで。

HKyosuke
質問者

お礼

早々にお返事いただいたのにお礼が遅くなり申し訳ございません。 むむ、Accessにはそんな癖があるんですね。 VBAを組むほどの処理ではなかったので 教えていただいた方法で簡単に対応ができて助かりました。 本当にありがとうございました。 ーーーーーー ちなみに、参考にされるみなさまに補足情報です。 Where句にほかの条件も指定したい場合は次のようにするとよいです。 Select 番号, 名前 From テーブル1 Where 名前 Like "*'*" or 名前 Like "*""*" or (((InStr(1,[エリア名],"\",0))<>False));

関連するQ&A