No.011
更新クエリでテーブルのデータを置換する(文字列の一部更新)
2003/2007/2010/2013/2016
テーブルのレコードが更新されるたびに、レコードのデータを置換する必要がある場合、毎回[置換]コマンドでは面倒ですね。
そのような場合には、更新クエリを作成しておくと便利です。
例えば次のようなテーブルがあるとします。
レコードのデータの全体の更新の場合、例えば[F2]フィールドの「A-あ」を「A~あ」に更新するとか(下図左)、[F3]フィールドを100倍に更新するとか(下図右)の場合、次のような更新クエリを作成します。
更新クエリは、クエリをデザイン ビューで作成、データを更新するテーブルを追加します。
[クエリ ツール]-[デザイン]タブ-[クエリの種類]グループ-[更新]をクリックして、更新クエリに切り替えます。
更新するフィールドをデザイン グリッドに配置し、[レコードの更新]セルに更新内容を指定して実行します。
特定のレコードを更新する場合は、抽出条件の設定も必要です。
数値系の更新クエリの場合、手が滑ってまた実行してしまった場合、さらに100倍となりますので、ご注意ください。
では、今回の本題です。
更新クエリで、レコードの一部分の文字列を更新する場合、上図左のような設定ではできません。
では、[F3]フィールドで200以上のレコードのみ、[F1]フィールドの「-」を「=」に更新してみましょう。
文字列の部分更新はReplace関数を利用し、更新クエリの設定は次のように行います。
使用した、Replace関数は置換の関数です。
3つの引数は順番に、対象フィールド、検索文字列、置換文字列を指定します。
Replace([F2],"-","=")
更新クエリを実行後、万が一のときに元に戻すのが困難な場合がありますので、テーブルのバックアップを取るなどの対処を行っておくと安心です。
ヘルプmemo
<Replace関数>
指定した文字列を置換文字列に置換します。
構文: Replace(expression, find, replace [, start ] [, count ] [, compare ] )
引数:
expression …置換する文字列を含む文字列式を指定
find …検索する文字列を指定
replace …置換する文字列を指定
start …引数[expression]内の内部文字列の検索開始位置を指定[省略可]
今回主要な引数のみ記載しています。詳しくはMicrosoftのサポートページ「Replace 関数」をご参照ください。