n文字目の文字を別の文字に置き換える

f:id:accs2014:20181103152658p:plain:right:w500

 文字列のうち指定した位置にある文字だけを他の文字に置き換えるというものです。
 ExcelですとREPLACE関数がまさにそうなのですが、AccessのReplace関数は機能が異なり、他に該当する関数もありませんので別のやり方を試してみます。
 例として画像テーブルの「早口言葉」列の3文字目を「×」に置き換えるものとします。


f:id:accs2014:20181103152656p:plain:right:w600

 クエリのデザインビューです。
 次のような列を設けます。



3文字目置換: Left([早口言葉],2) & "×" & Mid([早口言葉],4)

 シンプルに、文字列の最初の2文字と、3文字目に「×」、そして文字列の4文字目以降をつなぎ合わせるという方法です。
 4文字目以降についてはRight関数を使うことも考えられますが、Mid関数(第3引数を省略すれば指定位置以降すべてを抽出できる)の方が簡単です。
 なお、他の例として5文字目を置き換える場合は式中の「2」を「4」に、「4」を「6」に変えればOKです。

f:id:accs2014:20181103152653p:plain:right:w650

 デザインビューです。
 注意点ですが、文字数がn文字に満たない場合は文字列の末尾に「×」がつきますし、文字列がNullの場合は単に「×」と出力されますので、必要に応じてIIf関数などで別途対応しなければなりません。

 なお備考として、Replace関数を利用して実現する方法も考えられますが、n文字の文字と同じ文字が前後に存在する場合(例として上記テーブルの3番目の「しんしゅんしゃんそんしょー」)を考える必要があり、かえって面倒になります。