アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
先日、ご質問させていただきましたが、質問内容が変わってきたので、質問させてください。

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)*"));
クエリでフィールドを増やして、作成しようとすると、商品名が重複しています。とエラーができます。
お力を貸してください。

A 回答 (2件)

UPDATE [★商品テーブル]


SET [★商品テーブル].商品名= Replace(Replace([商品名],"(1)","1"),"I","1")
WHERE ((([★商品テーブル].商品名) Like "*(1)*") or (([★商品テーブル].商品名) Like "*I*"));
かな?

この回答への補足

すごいですねっ!!ありがとうございます。

ちなみに、(2)とIIを2にも置換したいのですが、その場合は、もう1つクエリを作るしかないのでしょうか?

クエリでフィールドを増やして、作成しようとすると、商品名が重複していと出てしまうので。

お手数ですが、教えてください。

補足日時:2007/03/29 09:44
    • good
    • 0
この回答へのお礼

色々やってて出来ました。ありがとうございました。

お礼日時:2007/03/29 14:57

>Replace([商品名],"(1)","1")


これじゃ置き換えたい数字の数だけクエリがいるのでは?
あるいは数だけのネスト?

数字の後ろのスペースが必ずあるのなら

下のような変換対応テーブルを作ります

旧新
I1
II2
(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

商品名にスペースがあるとは限らないのですが、他の方法がありましたらお力貸してください。

補足日時:2007/03/29 09:33
    • good
    • 0
この回答へのお礼

色々やってて出来ました。ありがとうございました。

お礼日時:2007/03/29 14:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!