SQL

DBデータの一括置換

2012年11月02日
データベースに登録しているデータを一気に置換するコマンドはないかと調べてみました。
【replace】関数で実現できるようです。

tableZに
id column1
1 dataA ・・・
2 dataB ・・・
3 dataA ・・・
  ・
  ・
  ・
というデータがあり、【data】を【field】に変更したい場合、
update tableZ set column1 = replace(column1, 'data', 'filed');
で変更できます。

変更後は
id column1
1 fieldA ・・・
2 fieldB ・・・
3 fieldA ・・・
  ・
  ・
  ・
になります。

使ったことがある気がしますが、忘れてました。

ここまでは何の問題もなかったのですが、updateが処理した件数を取ってみて、驚きました。
ありえない数だったのです。
該当する件数は100件ほどなのに、処理件数は1000件近かったのです。

どうやら処理件数はデータ全件数になるようです。
全ての行に対してreplaceを実行するからでしょう。

ああ、驚いた。