いつもお世話になっております。
Windows XP(SP3) 上でAccess 2003 SP3を利用しているのですが
クエリで"\"(半角円マーク)をWhere句に指定した際に
半角・全角とも抽出してしまい困っています。
回避策をご存知であれば教えてください。
■サンプルデータ
テーブル名を「テーブル1」登録データは次とします。
番号 名前(テキスト型) 説明
---- --------------------- -----------------
1 ああああ¥ああああ #全角の円マーク
2 ああああ\ああああ #半角の円マーク
■作成したクエリ
SQLビューでいうと次になります。
SELECT 番号,名前
FROM テーブル1
WHERE 名前 Like "*\*"
【結果】
番号 名前(テキスト型) 説明
---- --------------------- -----------------
1 ああああ¥ああああ #全角の円マークもヒットする
2 ああああ\ああああ
■他に試したSQL
(1)全角を明確に除外
SELECT テーブル1.番号, テーブル1.名前
FROM テーブル1
WHERE (((テーブル1.名前) Like "*\*" And (テーブル1.名前) Not Like "*¥*"));
>>【結果】該当件数0件となりいずれもヒットしない
(2)円マークをchrで指定
SELECT テーブル1.番号, テーブル1.名前
FROM テーブル1
WHERE 名前 Like ("*" & chr(92) & "*")
>>【結果】2件ともヒット
No.1ベストアンサー
- 回答日時:
> 回避策をご存知であれば教えてください。
Accessのクエリの場合、「全角/半角」の違いだけでなく、
「カタカナ/ひらがな」まで同じものとして扱われてしまいます。
(Excelからインポートした場合など、その機能が重宝する
場合もあるのですが)
確か、設定でこの問題を回避することはできなかったと
記憶していますので、全角/半角の区別が必要な場合、
私は以下のような方法を採っています:
Select 番号, 名前
From テーブル1
Where InStr(1, 名前, "\", 0);
つまり、第4引数を指定したInStr関数であれば、全/半角
の区別がされることを利用する、ということです。
なお、ヘルプでは「vbBinaryCompare」などの定数が提示
されていますが、これらはVBAでのみ有効で、クエリやマクロ
などでは使用できませんのでご注意ください。
(上記のように、「0」「1」などの「値」を指定します)
【今日の蛇足(汗)】
こちらの環境(Access2003/XP)で確認したところ、
今回の事例に限っては「InStr(名前, "\")」としても
抽出可能なようです。
(第1引数および第4引数を省略:詳細はヘルプを参照下さい)
これは恐らく、InStr関数の内部処理では、「\」は半角
円マークではなく「バックスラッシュ」として扱われている
のではないか・・・と推測します。
(クエリでは確かに「\」は「¥」の半角文字として扱われて
いるのですけれどね・・・)
http://oshiete.goo.ne.jp/qa/4114026.html
一応、参考まで。
早々にお返事いただいたのにお礼が遅くなり申し訳ございません。
むむ、Accessにはそんな癖があるんですね。
VBAを組むほどの処理ではなかったので
教えていただいた方法で簡単に対応ができて助かりました。
本当にありがとうございました。
ーーーーーー
ちなみに、参考にされるみなさまに補足情報です。
Where句にほかの条件も指定したい場合は次のようにするとよいです。
Select 番号, 名前
From テーブル1
Where 名前 Like "*'*"
or 名前 Like "*""*"
or (((InStr(1,[エリア名],"\",0))<>False));
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- PostgreSQL postgreSQL カラムの全ての値を取得したい 3 2022/10/07 12:33
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL 三科目合計点のクラス別平均点求めるクエリ式を教えてください 1 2023/07/04 09:44
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- MySQL テーブル名が可変の場合のクエリの書き方 1 2023/02/17 21:21
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
ACCESSに同時アクセス(編集)を...
-
access テーブル内のレコード...
-
Accessの追加クエリで既存のテ...
-
Accessレコードの追加や変更が...
-
デザインビューで、連結式 を...
-
ACCESS97のテーブルサイズについて
-
リンクテーブルを CopyObject ...
-
Accessでvlookupみたいなことは...
-
ACCESSで指定されたテーブルか...
-
SQLで日付を条件に削除したい
-
3つの表を1つに縦に連結する
-
Accessでテーブルからテーブル...
-
テーブル作成クエリで主キーを設定
-
Accessクエリでの、LIKE条件
-
Accessでテーブルをデータシー...
-
アクセスで消し込みがしたい
-
テーブルの値の先頭2桁を全て...
-
翌営業日までの日数をSQLで求め...
-
ツリー構造をRDBで表現するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
ACCESSに同時アクセス(編集)を...
-
Accessクエリでの、LIKE条件
-
Accessでテーブルからテーブル...
-
access テーブル内のレコード...
-
デザインビューで、連結式 を...
-
2つのテーブルを比較して一致し...
-
3つの表を1つに縦に連結する
-
ACCESSで指定されたテーブルか...
-
Accessレコードの追加や変更が...
-
Accessの追加クエリで既存のテ...
-
Accessでvlookupみたいなことは...
-
SQLで条件指定結合をしたいがNU...
-
ツリー構造をRDBで表現するには?
-
SQLで日付を条件に削除したい
-
リンクテーブルを CopyObject ...
-
Accessのサブフォームで#Name...
-
時間の足し算
-
INSERT時にデータ登録とmaxの発...
-
SQL: SELECT UNIONすると文字数...
おすすめ情報