• ベストアンサー

アクセスのレコードデータ一部置換

たとえば「6DBO1282」のようなデーが有り、このなかの0(オー)を0(ゼロ)に更新クエリで置き換えるにはどうしたらいいのでしょうか。 ワイルドカードを使ってもうまく行きません。 例えば、 抽出条件として*o*、レコードの更新として*0*としたら関係データ全てが*0*に置き換わってしまいました。 (テーブル上の検索と置換では出来る事はわかっています。)

質問者が選んだベストアンサー

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

長いですけど・・もっとうまいやり方もあるでしょうけど・・・一応・・・ UPDATE テーブル SET テーブル.フィールド = IIf(InStr(1,[フィールド],"O")=0,[フィールド],Mid([フィールド],1,InStr(1,[フィールド],"O")-1) & "0" & Mid([フィールド],InStr(1,[フィールド],"O")+1,99)); これでなんとかできます。 SQLビューの使い方はご存知ですよね^^; ま、念のため・・ デザインビューで、レコードの更新の欄を IIf(InStr(1,[フィールド],"O")=0,[フィールド],Mid([フィールド],1,InStr(1,[フィールド],"O")-1) & "0" & Mid([フィールド],InStr(1,[フィールド],"O")+1,99)) としてやってください。 どちらにしても、盲目的にフィールドの最初のO(オー)を置き換えてしまいますし、 一つのデータにO(オー)が二つ以上無いのが条件ですので、 そこをご理解いただいたうえでテストください。 バックアップは取っておいてくださいね^^;;

ticktak
質問者

お礼

やっと時間ができてためしてみました。みごと希望の結果を得ることができました。 ありがとうございます。

その他の回答 (1)

  • NNori
  • ベストアンサー率22% (377/1669)
回答No.1

フィールド名をfield1 テーブル名を table1 とすると update table1 set field1 = replace( field1 , "o" , "0" ) where field1 like "*o*" かな。うまくいく気がしないなぁ。

関連するQ&A