こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

MS Access 複数文字列の置き換えについて

アクセスはデザインビューでクエリを組むことができる程度の初心者です。
できればSQLを直接いじらずにもできる方法でお教え頂ければ幸いです。

1つのテーブル内に30種類の文字を置き換えたい列が10個あります。
置き換えたい列A~Jには、それぞれ異なるデータが入っていますが、置き換えたい内容は同じです。
01~30までの数値をそれぞれ対応する文字あ~ほに置き換えたい列が10個あるということです。
クエリを組んでreplaceやswitchを使うには式が長すぎると怒られてしまいますし、変換用のテーブルを作ろうにも置き換えたい列が10個もあるのでうまく繋げません。
変換用テーブルを10個作ればできるのかもしれませんが、さすがにそこまで無駄なテーブルは作るのは抵抗があります。

何かスマートな方法があればと探しています。
よろしくお願い致します。

投稿日時 - 2016-10-20 11:11:51

QNo.9245193

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

テーブルのサンプルがTABが削除されてつながってしまってみにくいので、

T_Data
--------------
ID A B C
--------------
1 01 02 03
2 03 02 01
3 05 04 03

T_Replace
-----------
F1 F2
-----------
01 あ
02 い
03 う
04 え
05 お
・・・
以下略

投稿日時 - 2016-10-20 12:02:40

ANo.1

A B C の3列のテーブルを例に回答しますね。

T_Data
--------------
IDABC
--------------
1010203
2030201
3050403

T_Replace
-----------
F1F2
-----------
01あ
02い
03う
04え
05お
・・・
以下略


クエリを新規作成して、上記の2つのテーブルを追加します。
2つのテーブルは繋がずにそのままで。
これを更新クエリにして、下記のように設定します。

フィールド   A
テーブル    T_Data
レコードの更新 Replace([A],[F1],[F2])


フィールド   B
テーブル    T_Data
レコードの更新 Replace([B],[F1],[F2])

フィールド   C
テーブル    T_Data
レコードの更新 Replace([C],[F1],[F2])

このクエリを実行すれば希望の変換ができます。

一応SQLも提示ておきます。
UPDATE T_Data, T_Replace
SET
T_Data.A = Replace([A],[F1],[F2]),
T_Data.B = Replace([B],[F1],[F2]),
T_Data.C = Replace([C],[F1],[F2]);

投稿日時 - 2016-10-20 11:59:39