• ベストアンサー

1つのSQL文で文字列を置換する方法を教えてください。

以下のようなテーブルで、項目aに入力されているデータに含まれている[aaaa]を[bbbb]に置き換えたいのですが、どなたか1回で置き換えられるSQL文を教えていただけないでしょうか。 どうぞ、宜しくお願い致します。 table:TEST [項目名]/[データ]  a / aaaaみかんりんご ■変換後■ [項目名]/[データ]  a / bbbbみかんりんご

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

  • ベストアンサー
noname#11722
noname#11722
回答No.2

@dataはSqlServer内で使用する変数みたいなものです。 今回はACCESSだということなので、 クエリーであれば、フィールド部に以下のような感じで記述します。 テーブル名をTEST フィールド名をaとした場合。 a : Replace([TEST].[a],'aaaa','bbbb') これで大丈夫かと思います。

MMM-SRV
質問者

お礼

回答ありがとうございます。 早速実行してみました。 すると、以下のメッセージが表示されてしまいました。 ---------------------------------------------------------------------------------- Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access Driver] 式に未定義関数 'Replace' があります。 ---------------------------------------------------------------------------------- 手元の書籍に、MS Accessでは、「Replace」未対応と書かれていました。。。 代わりとなるようなものはあるのでしょうか?

その他の回答 (5)

回答No.6

ACCESSは詳しくありませんが.. update TEST set [データ]=replace([データ],"aaaa","bbbb") という更新クエリを実行すれば良いかと思います。

noname#11722
noname#11722
回答No.5

どうしてもSQL一文だけでということであれば、 仮定のみの話ですが、まず ASP上から、SQL文を使用して、ACCESSのモジュール内に作成した関数(function)が呼び出せるかどうか? もし、呼び出せるなら、Replace相当の自作関数をAccess側に実装します。 http://www.qoop.ws/blog/archives/000053.html 辺りを参考にしてください。 あとはSelect文の中でReplaceを使用すればいいのですが、 なにせ、検証してないので本当に出来るかどうかはわかりません。

MMM-SRV
質問者

お礼

いろいろとありがとうございました。 ちょっと急ぎだったもので、一先ずASP側でReplaceしてuploadすることにしました。 本当にありがとうございました。 上記の自作関数は、参考にさせていただきます。 今後とも宜しくお願い致します。

noname#11722
noname#11722
回答No.4

ASPは少ししかかじってませんが、 ASP側にもReplaceないですか? あれば、取得したデータに Replaceを使用すれば大丈夫かと思いますが 今、コーディング出来る環境ではないので、 どうなるかはちょっと解りませんが・・・

MMM-SRV
質問者

お礼

AccessでReplaceが使えない理由がわかりました。 ↓参照 http://www.accessclub.jp/bibouroku/ziten.cgi?action=view&data=33 >ASP側にもReplaceないですか? >あれば、取得したデータに >Replaceを使用すれば大丈夫かと思いますが 「Selectして取得したデータにReplaceかけて、再度updateする。」ってことですよね? この方法は、知っていたのですが、SQL実行だけで出来ないものかと。。。 出来ないものとわかれば、あきらめてコーディングにかかりたいと思います。 色々ありがとうございました。

noname#11722
noname#11722
回答No.3

追加情報: VBA内での記述であれば、 Select Replace([TEST].[a],'aaaa','bbbb') AS a FROM TEST になります。

MMM-SRV
質問者

お礼

開発は、MicrosoftASP で行っています。

noname#11722
noname#11722
回答No.1

SqlServerだったらReplaceとか DECLARE @data AS NVARCHAR(50) SET @data='aaaaみかんりんご' SET @data = Replace(@data,'aaaa','bbbb') SELECT @data

MMM-SRV
質問者

お礼

回答ありがとうございます。 勉強不足で申し訳ありません。 もう少し教えてください。 >DECLARE @data AS NVARCHAR(50) >SET @data='aaaaみかんりんご' >SET @data = Replace(@data,'aaaa','bbbb') >SELECT @data このSQL文は、これで完結ですか? それと @data とは、何でしょうか? 情報不足ですみません。 DBは、MS Accessです。