MS Access Tips/Sample and VBA and Blog customize etc...

複数の文字列置換をクエリで一気に実行する-改良版

タイトル画像

複数の文字列置換をクエリで一気に実行する

という記事を以前投稿しました。置換対象文字列の一部に重複があるとうまくいかない場合がありました。それに対処する方法を紹介します。

難易度:

不具合例

テーブルデータ(IDは主キー)

TData
IDFData
1○○かなこ○○○
2□さかな□□かなやま□□
3△△△さかなや△△かなやま
4△△かな△
TReplace
IDFld1Fld2
1かな佳奈
2かなこ夏菜子
3さかな
4かなやま金山
5さかなや魚屋

前回の更新クエリ

これを実行すると

TData
IDFData
1○○佳奈こ○○○
2□さ佳奈□□佳奈やま□□
3△△△さ佳奈や△△佳奈やま
4△△佳奈△

かな→佳奈 の置換が最初に実行されるので、他の置換が実行されません。

対策

文字列の長い方を先に実行するようにしなければなりません。TReplaceのデータを文字列の長い順に入力しなおして、

TReplace
IDFld1Fld2
1さかなや魚屋
2かなやま金山
3さかな
4かなこ夏菜子
5かな佳奈

実行するとうまく行きました。

TData
IDFData
1○○夏菜子○○○
2□魚□□金山□□
3△△△魚屋△△金山
4△△佳奈△

ただ、テーブル自体は並び順は保持しないので、必ずうまくいく保証はないかも知れません。

テーブルデータの並び順 - Fly Me To The Access-Heaven

ORDER BY で明示的に並べ替えれば確実ですね。

実行してみるとエラーが出る。

エラーメッセージ

セミコロンはちゃんと付けているのですが。ヘルプを調べてみましょう。

UPDATE ステートメント (Microsoft Access SQL)

構文に ORDER BY がないですね。Accessでは、UPDATE では ORDER BY が使えないらしい。

しかたがないのでサブクエリで並べ替えて、それを更新クエリにしてみます。

実行してみるとうまくいきました。たぶん、いいと思いますが、実際に使うときは十分検証してからご使用ください。

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/458-f4a39151
該当の記事は見つかりませんでした。