レポートに印刷された品目などのコードの視認性を高めるために、レポート出力時にコードに何らかの文字列を挿入したいという要望が来ました。
ただこのコードは決まった長さのコードではなく、8桁もあれば13桁もあるようなコードでした。
文字列の先頭から数えて区切る方法ではなく、コードの最後から数えて区切る方法をお願いされました。
○○○-○○○○○
○○○○○-○○○○○
上記の様な見た目に変更させたいです。
やっていること
列の下5桁前に文字列を挿入する場合
mid(列名,1,len(列名)-5) & '-' & right(列名,5) as 新列名
下5桁を抽出する方法は簡単
right(列名,5)
Rigth関数を使って下5桁が抽出できます。
もし任意の桁がある場合は数値を変更してください。
先頭の抽出が難しい
MID関数で対応できるのですが、それだけでは抽出する桁数がわかりません。
桁数の部分にLEN関数を使って列の桁数を取得し、更に5桁引きます。すると先頭から下5桁引いた文字列を抽出できます。
mid関数とlen関数の合せ技
mid(列名,1,len(列名)-5)
len関数で列内の文字列数を取得し、さらに5桁分を引きます。その結果midの第三引数の抽出する文字列数がわかります。
最後は結合
先頭の文字列と下5桁が抽出できれば、お互いの文字列を結合します。
mid(列名,1,len(列名)-5) & '-' & right(列名,5)
間に指定の文字列(今回は「-」)を挿入させます。