• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS2010の文字列の抽出とリプレイス関数)

ACCESS2010の文字列の抽出とリプレイス関数

このQ&Aのポイント
  • ACCESSのクエリを使って、テーブル内の特定のフィールドから文字列を抽出する方法について教えてください。
  • また、指定した文字列を別の文字列に置換するリプレイス関数の使い方も教えていただけますか?
  • 参考サイトの例を試してみたのですが、クエリが実行されず結果が0になってしまいます。どうすれば正しく実行できるでしょうか?

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

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.5

>抽出条件 item の値が不特定の桁で左から4番目が 2 の全てのレコード そうなのであれば、、、 UPDATE syouhin SET syouhin.item2 = Replace([syouhin].[item2],'特8','●') WHERE mid([syouhin].[item], 4,1) = "2"; とかしたほうが楽ではないかな? 一般的なアドバイスとしては、更新クエリを作る前に選択クエリをつくり、 それで更新したいレコードを抽出できていることを確認してから、 更新クエリにするのが良いと思います。

kysblue
質問者

お礼

ありがとうございました。何とか なりそうです。 この度は、本当にお礼の言いようがございません。 誠に有り難うございました。

すると、全ての回答が全文表示されます。

その他の回答 (5)

回答No.6

桁数が不特定で、Likeを使うなら、 4桁目が2のレコードが対象の場合、 UPDATE syouhin SET syouhin.item2 = Replace([syouhin].[item2],'特8','●') WHERE [syouhin].[item] Like "????2*"; ですね。

kysblue
質問者

お礼

有り難うございます。 自分の未熟さを痛感いたします。

すると、全ての回答が全文表示されます。
回答No.4

おっしゃっていることにブレがあるので、何をしたいのか明確でないです。 もう一度、何をしたいのか明確に提示してください。 例えば、 対象テーブル syouhin 抽出条件 item の値が10桁で5番目が 1 のレコード 更新 item2 に含まれる 特8 を ● に変換 というように。 上記の仕様なら前回の回答のSQLで問題なく更新されます。 ついでにデータ例と希望結果も提示してもらえると分かりやすいです。 item     item2 ---------------------------------- abcd1abcde  あああ特8ああ abcd1abc   い特8いいいい abcd2abcde  うう特8うううううう 上記のデータで前回の更新クエリを実行すると、下記になります。 item     item2 ---------------------------------- abcd1abcde  あああ●ああ abcd1abc   い特8いいいい abcd2abcde  うう特8うううううう

kysblue
質問者

お礼

この度は、ありがとうございました。

kysblue
質問者

補足

申し訳ございません。 やりたいことしては 対象テーブル syouhin 抽出条件 item の値が不特定の桁で左から5番目が 1 の全てのレコード 更新 item2 に含まれる 特8 を ● に変換 item     item2 ---------------------------------- abcd1abcde  あいう特8えお abcd1abc   い特8おえあう abcd2abcde  かき特8くけきこ 上記のデータで更新クエリを実行し下記にしたいです。 item     item2 ---------------------------------- abcd1abcde  あいう●えお abcd1abc   い●おえあう abcd2abcde  かき●くけきこ で、上記を応用して 上記の抽出条件を応用して 対象テーブル syouhin 抽出条件 item の値が不特定の桁で左から4番目が 2 の全てのレコード 更新 item2 に含まれる 特8 を ● に変換 item     item2 ---------------------------------- abc1abcde  あいう特8えお abc1abc   い特8おえあう abc2abcde  かき特8くけきこ 上記のデータで更新クエリを実行し下記にしたいです。 item     item2 ---------------------------------- abc1abcde  あいう特8えお abc1abc   い特8おえあう abc2abcde  かき●くけきこ この抽出条件の 何番目の 英数字を 指定して 変換を繰り返していきたいのです。 何卒、ご教授下さいませ。

すると、全ての回答が全文表示されます。
回答No.3

> 抽出したいのは > syouhinのテーブルから > itemのフィールドの10ケタの英数字の中から > 5番目が1になるものを > item2の特8を●に変換したいのです。 UPDATE syouhin SET syouhin.item2 = Replace([syouhin].[item2],'特8','●') WHERE [syouhin].[item] Like "????1?????";

kysblue
質問者

お礼

この度は、ありがとうございました。

kysblue
質問者

補足

試して、見たのですが、やはり クエリが実行されません。 UPDATE syouhin SET syouhin.item2 = Replace([syouhin].[item2],'特8','●') WHERE [syouhin].[item] Like "????1?????"; を利用して 左から5番目の数字が2だったら 特8をL とか したいのですが、 itemのフィールドが全て10ケタでないからなのでしょうか? どなたか、ご教授下さいませ。

すると、全ての回答が全文表示されます。
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

もし可能であれば、 (1)クエリのSQL(SQLビューにすると表示されます)のWHERE句(SELECT...WHERE...のWHEREの後の部分) (2)具体的に抽出したいレコード を記載していただけますでしょうか?

kysblue
質問者

お礼

この度は、ありがとうございました。

kysblue
質問者

補足

UPDATE syouhin SET syouhin.item2 = Replace([syouhin].[item2],'特8','●') WHERE (([syouhin].[item] Like (syouhin.item2)="????1????")); 抽出したいのは syouhinのテーブルから itemのフィールドの10ケタの英数字の中から 5番目が1になるものを item2の特8を●に変換したいのです。 が、何度やっても件数 0で、うまくいきません 何卒、ご教授下さいませ。

すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

>AというものBに変換させるリプレイスの関数を 推測ですが a と A を別の文字として認識してるだけでしょう。 A→Bでなくa→bとなるリプレイス関数にするか vbTextCompareを指定すればいいのでは? ※クエリで使う場合は、vbTextCompareでなく1と入力してください。 Replace関数 http://office.microsoft.com/ja-jp/access-help/HA001228898.aspx ↑で  vbBinaryCompareは大文字/小文字を区別します。 vbTextCompareは大文字/小文字を区別しません。

kysblue
質問者

お礼

この度は、ありがとうございました。

kysblue
質問者

補足

済みません説明が 下手で ここに 構文を書きますので どこを直したらいいのか、何卒 ご教授下さいませ UPDATE syouhin SET syouhin.item2 = Replace([syouhin].[item2],'特8','●') WHERE (([syouhin].[item] Like (syouhin.item2)="????1????")); 抽出したいのは syouhinのテーブルから itemのフィールドの10ケタの英数字の中から 5番目が1になるものを item2の特8を●に変換したいのです。 が、何度やっても件数 0で、うまくいきません 何卒、ご教授下さいませ。

すると、全ての回答が全文表示されます。