• 締切済み

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

アクセスはデザインビューでクエリを組むことができる程度の初心者です。 できればSQLを直接いじらずにもできる方法でお教え頂ければ幸いです。 1つのテーブル内に30種類の文字を置き換えたい列が10個あります。 置き換えたい列A~Jには、それぞれ異なるデータが入っていますが、置き換えたい内容は同じです。 01~30までの数値をそれぞれ対応する文字あ~ほに置き換えたい列が10個あるということです。 クエリを組んでreplaceやswitchを使うには式が長すぎると怒られてしまいますし、変換用のテーブルを作ろうにも置き換えたい列が10個もあるのでうまく繋げません。 変換用テーブルを10個作ればできるのかもしれませんが、さすがにそこまで無駄なテーブルは作るのは抵抗があります。 何かスマートな方法があればと探しています。 よろしくお願い致します。

みんなの回答

回答No.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 お ・・・ 以下略

回答No.1

A B C の3列のテーブルを例に回答しますね。 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 お ・・・ 以下略 クエリを新規作成して、上記の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]);

関連するQ&A

  • access2003 「#エラー」を文字列にしたい

    テキスト型に入れた値を数値に変換し、「#エラー」を文字列にしたい テーブル1のデザインビューで ・フィールド1 テキスト型 ・主キーなし として データを 1 2 あ を投入します。 そして SELECT CLng(テーブル1!フィールド1) AS 数値型に変換 FROM テーブル1; クエリを作りました。 1と2は数値に変換されますが、文字列を入れた「あ」は 「#エラー」になります。  「#エラー」を「未設定」という文字列にしたいのですが どうすえばいいのでしょうか? よろしくお願いします。

  • 文字列に対してPHP上で一括置き換えしたい

    DBにあるテーブルの指定されたカラム全てを文字列に対してPHP上で一括置き換えしたいです。 phpアドミン上でSQL文を使って UPDATE `テーブル名` SET フィールド名A=REPLACE (フィールド名A,"置換前の文字列","置換後の文字列"); で実行したらうまくいくのですが、 これをPHP上で処理したいと考えてます。 require("godb.php");//DBにアクセス $sql ="UPDATE テーブル名 SET フィールド名 = REPLACE(フィールド名,"AAA","BBB")"; mysql_query($sql2); と実行してもうまくいきません。。。 これって、、、一個一個対象カラムをPHP上で取り出してから 処理をかけないといけないのでしょうか。。 アドバイスいただけたら幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • access2000 クエリで文字列を数値に変換

    access2000 クエリで文字列を数値に変換 商品の管理DBをaccessで入力し、テーブルをexcelにエクスポートして並び替えやその他の編集をしています。 テーブルに「数量」というフィールドがあり、数字入力が主ですが、商品によっては「無制限」や「-」のように文字列を入力しなければならない為、「数量」は「数値型」ではなく「テキスト型」になっています。 excelへエクスポートした時に、「10」などは数値として認識させ、「無制限」などはそのままの文字列にしたいです。 クエリの式に「Val([数量])」としてみたところ、「10」は数値として変換されましたが、数値ではない文字列は全て「0」になりました。 また、「15,000」は「15」になりました。(カンマが文字列な為) これを 「10」→「10」(数値) 「無制限」→「無制限」(文字列) 「15,000」→「15000」(数値) にするような関数はありませんでしょうか。 excel2007のエラー処理(セルを選択した時に出る「!」で「数値に変換する」)と同じような挙動にしたいです。 宜しくお願いします。

  • Access 長文の文字列結合

    選択クエリAには空のフィールド1があります。 選択クエリCには説明文1というフィールドがあります。 空のフィールド1に説明文1と、ある長文の文字列を収めたい為、以下のようにしました。 選択クエリC.説明文1 & "長文文字列1" AS 空のフィールド1 として、SQLビューへ直接、長文文字列を入力しています。 ※デザインビューにすると「指定した式はクエリのデザイングリッドの1024文字の制限を超えています」と出て開けません。 こういった書き方は力技なのでしょうか? また、この長文の文字列ですが、種類が複数あります。 クエリAのフィールド1には、説明文1と文字列1、フィールド2には、説明文2と文字列2、 クエリBのフィールド1には、説明文1と文字列3、フィールド2には、説明文2と文字列4 など、クエリAやBのような他のクエリを複数作成したい為、 別のスマートな書き方があればご教示いただきたく思っております。 クエリCはデータベースからダウンロードしたものをAccessにインポートして成型した情報で、 クエリA、B等はシリーズ別の説明文の雛形として使用しています。 長文文字列は注意文のようなもので、その中の一文だけが違う文章です。 作業環境は、OS:Windws7、使用ソフト:Access2003となっております。 どうぞ宜しくお願い致します。

  • テーブルの設計はとりあえず文字列で取り込み?

    テーブルの設計はとりあえず文字列で取り込み? こんにちは。会社の上司にSQLについて教えてもらいました(ACCESS2003)。 上司曰く、とりあえずテーブルの設計はvarcharにしておけば大丈夫。 もし取り込んだ値が数値なら、あとで数値に変換する関数で数値に変換して計算行えばいいよと言われました。 とりあえず、文字列なら必ずインポートできるからテーブルのデータ型は全て文字列型。 というのは正しいのでしょうか?様々な型があるのに、すべて文字列型にしてもいいのかなと素朴な疑問が生まれました。 よろしくお願いします。

  • Access2003で複数条件で文字列を変換する

    Access2003で、フィールド内の空欄を削除するのと同時に、 フィールドの文字列を全角大文字に変換する方法を教えて下さい。 現在、2回に分けてクエリを実行しております。 まず、「Trim 関数」を使いフィールド欄へ式を入力し空白の削除を 実行してから、次に新たにクエリを作成して「StrConv 関数」を使い 文字列を全角大文字に変換しております。 一度のクエリで「空白削除」と「全角大文字変換」ができる方法を教えてください。 宜しくお願い致します。

  • ユニオンクエリをデザインビューで開くには?

    アクセス2010です。 T_テーブル1とT_テーブル2があり、 どちらもフィールド1に文字が入っています。(テキスト型です) クエリのSQLビューで SELECT * FROM T_テーブル1 UNION ALL SELECT * FROM T_テーブル2; として保存したらユニオンクエリが出来上がったのですが、 これをクエリのデザインビューで見るにはどうすればいいですか? 以前のバージョンならユニオンクエリをデザインビューで見れました。 でもやり方を忘れました。 該当のクエリをアクティブにしてデザインビューを選択しても SQLビューで開いてしまいます。

  • 文字列を time 型に変換するには。

    文字列を time 型に変換するには。 お世話になります。 PostgreSQL 8.2 & PgAdmin 1.6.3(WinServer 2003)を使用しています。 varchar 型のカラムに格納されている時刻を表す文字列('9:15' など)を time 型に変換してビューを作成する必要があるのですが、できずに困っています。 具体的には... 「table1」というテーブルに「時刻」(varchar 型)という名前のカラムを作成し、「9:15」という文字列を格納しておきます。 これをもとにビュー(view1)を作ろうとしているのですが、select 文のところで 、ERROR: syntax error at or near "時刻" SQLステート:42601 というエラー(構文エラー)が出てしまいます。  select time 時刻 from table1  結果:ERROR: syntax error at or near "時刻" SQLステート:42601 ちなみに、時刻を文字列で指定してやると、ちゃんと time 型で結果が返ります。  select time '9:15'  結果:09:15:00 抜本的に方法が間違っているとはおもうのですが、いくら調べてもこれを解決できるようなサイトが見当たりませんでした。 文字列を time 型に変換するにはどのようにしたらよいのかご教示いただけないでしょうか。 よろしくお願いします。

  • Access:クエリーにて集計後に文字列結合したい。

    Accessのクエリーでレコードのグループ化を行っている状態で、あるフィールドに対してだけ文字列の結合を行いたいのですが、集計部分をどのように指定すればよいかわからず困っています。 イメージとしては、SQLビューにて、グループ化されたレコードの合計が、  SUM([テーブル名].[フィールド名]) で求められる様に、 エクセルの文字列結合関数  CONCATENATE([テーブル名].[フィールド名]) が使いたい、という感じです、、 Accessにおける文字列結合は"&"を使うとありましたが、この場合どのように記述するべきでしょうか?

  • Accessでのリンクテーブルについて

    Access2007でSQLServer2005のテーブルのリンクを張っています。 このリンクテーブル内のnvarchar型のフィールドをクエリでint型へ変換したいのですが、CInt(対象フィールド)としてもオーバーフローが発生していまいます。 nvarchar型のフィールドの内容は8桁の数字で、SQLServer側では変換できています。 Accessではnvarchar型の変換はできないのでしょうか? 変換したビューを引っ張ることも考えましたが、そのクエリ以外では文字列として扱いたいので、できればクエリ内で変換したいのですが・・・。 どなたか解決方法をご存じでしたら教えてください。 お願いします。

専門家に質問してみよう