特定の文字より右側にある文字列を抽出する

 文字列に含まれる特定の文字(指定した文字)よりも右側の部分を取り出すときの関数の使い方です。
 ここでは、Right関数とInStr関数、そしてLen関数の組み合わせで実現してみます。

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

 サンプルはこのようなテーブルです。
 商品名にある「/」よりも右側の、名称部分だけを抽出するものとします。


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

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



注記なし商品名: Right([商品名],Len([商品名])-InStr([商品名],"/"))

 補足ですが、Right関数により、文字列のうち右側から指定した文字数分の文字列を取得できます。
 あとは何文字抽出するかですが、これは商品名の文字列の長さと「/」の位置の差で求まります。Instr関数により、商品名列の文字列中の「/」の文字が何文字目にあるのか(数字)を取得できますし、Len関数により商品名列の文字列の長さを取得できますので「Len([商品名])-InStr([商品名],"/")」となります。
 これらの関数を入れ子(ネスト)にすることで「/」という文字より後の部分を抽出できます。

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

 データシートビューです。
 「/」より後の文字列が正しく抽出されているのがわかります。


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

 ちなみにですが、文字列中に「/」が存在しない場合でもこのように文字列が取得できます。
 左側を抽出する場合にはエラーが出ますのでちょっと工夫が必要ですが、この例ではこのままで大丈夫ということです。
 なお、特定の文字より左側を抽出する例については次の記事をご覧ください。

www.accessdbstudy.net