MID関数は文字列の指定した位置から、指定した長さを取り出す関数です。 INSTR関数やLEN関数と組み合わせれば文字列から検索し、その見つかった位置から取り出すことができます。 構文 MID (文字列 , 取出し開始位置 , 取出す長さ) ここではMID関数で日付から「年」「月」「日」をそれぞれ取り出すクエリと、MID関数にINSTR関数とLEN関数を使用し、氏名から「姓」と「名」をそれぞれ取り出すクエリを作成します。 Access VBAでのMID関数の使い方はこちらを参照してください。 Access SQLでのMID関数の使い方はこちらを参照してください。 INSTR関数は、文字列から指定した文字を検索し、見つかった位置を返します。 LEN関数は、文字列の長さを返します。 MID関数については「AccessのVBAでSQLのMID関数を使い、文字列の途中から指定した文字数分の文字列を返す|フォーム実行例」も掲載していますので参考にしてください。 |
クエリの元になる研修記録テーブルです。
この研修日から、MID関数で「年」「月」「日」をそれぞれ取り出します。
次に、氏名からINSTR関数でスペースを検索し、「姓」と「名」をそれぞれ取り出します。
クエリデザインで下記の式を入力します。
年:MID([研修日],1,4)
「年」は1文字目から4文字取り出します。
月:MID([研修日],5,2)
「月」は5文字目から2文字取り出します。
日:MID([研修日],8,2)
「日」は8文字目から2文字取り出します。
日付を分解し、「年」「月」「日」をそれぞれ取出すことができました。
下記の式を入力します。
姓:MID([氏名],1,INSTR(1,[氏名]," ")-1)
「姓」は、INSTR関数で氏名のスペースを検索し、1文字目から見つかった位置-1までの文字数を取り出します。
名:MID([氏名],INSTR(1,[氏名]," ")+1,LEN([氏名])-INSTR(1,[氏名]," "))
「名」は、INSTR関数で氏名のスペースを検索し、見つかった位置+1から、LEN関数で全体の長さを求め、そこから見つかった位置を引いた文字数を取り出します。
氏名を分解し、「姓」「名」をそれぞれ取出すことができました。