【Access】Mid関数で開始位置を指定して文字列を抽出する

 

アクセス担当のまみです。

 

例えば、「WI-55-GT」のようなデータの「55」を取り出したいってことがあります。

 

先頭を取り出すのはLeft関数、末尾を取り出すのはRight関数だけど、真ん中を取り出すのってできるの?

さすがに真ん中を取り出すのはできないのかな?

 

(あいちゃん)
真ん中を取り出してくれる関数はMid関数だよ!
Mid関数は開始位置を指定して、指定した文字数を返してくれるよ!

 

そうなんです。先頭や末尾だけじゃなくて、指定した位置からの文字を取り出すことができるんです。

 

今回はMid関数についてお伝えしますね。

 

Mid関数

 

(あいちゃん)
はてな君どうしたの?何か悩み事?

 

(はてな君)
うん。入力してあるデータの真ん中を取り出したいんだけどできないのかな~って思って・・・

 

(あいちゃん)
それって取り出したい位置や文字数は同じなの?

 

(はてな君)
うん。桁数の決まっている商品コードだから同じだよ。

 

(あいちゃん)
だったらMid関数が使えるよ!

 

構文
Mid(文字列, 開始位置[,文字数])
[ ]内は省略可能です。省略すると、開始位置より後の文字列すべてが返されます。

 

クエリでMid関数を使用する

 

(あいちゃん)
じゃあクエリでMid関数を使ってみよう!

 

 

使用するテーブル

「T_サンプルデータ」

データ型はどちらも「短いテキスト」です。

 

テーブルの準備ができたら末尾2文字取り出すクエリを作成しましょう。

 

リボンの①「作成」タブから②「クエリデザイン」を選択し、「T_サンプルデータ」を追加します。

 

 

③フィールドに直接入力してもいいですが、右クリックして「ズーム」を選択すると、大きな画面で編集できます。

 

④「Mid: Mid([製品番号],4,3)」と入力して「OK」を左クリックしましょう。

 

(はてな君)
開始位置は「-」の次だから4、取り出したい文字数は3ってことだよね?

 

(あいちゃん)
そうそう、それで合ってるよ!
データシートビューに切り替えて確かめてみてね!

 

クエリの結果

 

 

(はてな君)
真ん中の文字が簡単に取り出せたよ!

 

(あいちゃん)
Mid関数って開始位置が指定できるから先頭や末尾のデータを取り出すこともできるんだよ!

 

(はてな君)
えっそうなの?

 

 

Mid関数で先頭と末尾を取り出す

 

 

先ほどのクエリに先頭と末尾を取り出すクエリを追加しましょう。

 

先頭: Mid([製品番号],1,2)

末尾: Mid([製品番号],8.2)

 

(あいちゃん)
開始位置は左から数えた位置になるんだよ。

 

(はてな君)
つまり先頭を取り出したい時は1で、末尾を取り出したい時は商品コードのえ~っと・・・・
左から数えて8番目!

 

(あいちゃん)
そうそう!データシートビューに切り替えてみてね!

 

 

(はてな君)
へ~すごい!
Mid関数って万能なんだね!

 

(あいちゃん)
ただ先頭から取り出すには開始位置はいつも1だけど、末尾を取り出すときは開始位置を数えないといけないからRight関数の方が簡単かな。

 

(はてな君)
そっか。先頭や末尾を取り出したい時はLeft関数やRight関数がいいのかな。
構文も簡単だし。

 

 
 
 

まとめ

 

開始位置を指定できるMid関数についてお伝えしました。

 

Left関数やRight関数に比べて、開始位置の指定が必要な分少し構文が難しいかなって感じますが、どこからでも好きな位置から文字が取り出せるのが良いですね!