- ベストアンサー
アクセス 更新クエリで文字置換え
お世話になります。 先日、ご質問させていただきましたが、質問内容が変わってきたので、質問させてください。 Accessで特定の文字を置き換えたいです。 商品名の一部を置換したいのですが、 I たばこ II 文房具 (1) 工具 (2) 雑貨 これの、 Iと(1)を1に置換し、 IIと(2)を2に置換したいです。 1:1(Iを1)で置換する、式は作成出来たのですが、2:1(Ior(1)を1)で置換する式はどうしたらいいのでしょうか? 1:1で作成した、SQLは下記のようになっています。 UPDATE [★商品テーブル] SET [★商品テーブル].商品名= Replace([商品名],"(1)","1") WHERE ((([★商品テーブル].商品名) Like "*(1)*")); クエリでフィールドを増やして、作成しようとすると、商品名が重複しています。とエラーができます。 お力を貸してください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
UPDATE [★商品テーブル] SET [★商品テーブル].商品名= Replace(Replace([商品名],"(1)","1"),"I","1") WHERE ((([★商品テーブル].商品名) Like "*(1)*") or (([★商品テーブル].商品名) Like "*I*")); かな?
その他の回答 (1)
- CHRONOS_0
- ベストアンサー率54% (457/838)
>Replace([商品名],"(1)","1") これじゃ置き換えたい数字の数だけクエリがいるのでは? あるいは数だけのネスト? 数字の後ろのスペースが必ずあるのなら 下のような変換対応テーブルを作ります 旧 新 I 1 II 2 (1) 1 (2) 2 こうしておいて UPDATE 元テーブル INNER JOIN 対応テーブル ON left(元テーブル.商品名,instr(元テーブル.商品名," ")-1) = 対応テーブル.旧 SET 元テーブル.商品名 = [新] & " " & mid(元テーブル.商品名,instr(元テーブル.商品名," ")+1); このクエリ(SQL)は結合条件に式を使用しているのでデザインビューでは作れません
お礼
色々やってて出来ました。ありがとうございました。
補足
ありがとうございます。 ただ、商品名にスペースがあるとは限らないです。 CHRONOS_0さんのおっしゃる通り、テーブルで、変換表を作成して、置換するのが、ベストだと思うのですが やり方がわからなくて、入れ子でやってくしかないのかなぁ。 と思って、このようなご質問にさせて頂きました。 ↓以前させて頂いた質問です。 http://oshiete1.goo.ne.jp/qa2867022.html 商品名にスペースがあるとは限らないのですが、他の方法がありましたらお力貸してください。
お礼
色々やってて出来ました。ありがとうございました。
補足
すごいですねっ!!ありがとうございます。 ちなみに、(2)とIIを2にも置換したいのですが、その場合は、もう1つクエリを作るしかないのでしょうか? クエリでフィールドを増やして、作成しようとすると、商品名が重複していと出てしまうので。 お手数ですが、教えてください。