社内SEの話

日々起きたことの記録用

【Access】 SQL 下5桁に区切り文字を挿入

レポートに印刷された品目などのコードの視認性を高めるために、レポート出力時にコードに何らかの文字列を挿入したいという要望が来ました。

ただこのコードは決まった長さのコードではなく、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)

間に指定の文字列(今回は「-」)を挿入させます。