- 締切済み
Accessのクエリを教えてください
仕事でAccessを使っていますが、氏名の姓名間にスペースが複数入っているものが有り、 ひとつに統一したいと思います。 データ量が多いのでクエリで一気に変換したいと思うのですが・・・ Accessのクエリで複数(2~20)あるスペースを一つにする方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
こんな風にしたらどうでしょう。 姓と名の2つの計算フィールドを作ります。 姓の方は 姓:Left([姓名], InStr([姓名]," ")-1) 名の方は 名:Trim(Mid([姓名], InStr([姓名]," "))) 姓の式の意味は、最初のスペースのひとつ前までを左から切り取って姓とする。 名の式の意味は、最初のスペースから右側全部を切り取って、切り取ったものの左右のスペースを取り除く。 ということです。 そして、さらに新姓名の計算フィールドを作って、 新姓名:[姓]& " " & [名] とすれば出来上がり。 一気に 新姓名:Left([姓名], InStr([姓名]," ")-1)& " " & Trim(Mid([姓名], InStr([姓名]," "))) とやってもいいのでしょうが。 ただし、元のデータが、間にスペースが入っていたとしても、必ず姓・名の順で書かれていて、ミドルネームはなく姓と名だけでないと結果が上手く出ません。 手元にアクセスがないので、記憶だけで書いていますが、たぶん全部クエリで使える関数だと思います。怪しいのがInStrなんですが、たしかクエリで使えたはず。 ユーザー定義関数を作る方法について、↓のサイトに例がありますので、こっちで実現してもいいと思います。 http://www.nurs.or.jp/~ppoy/access/access/acM082.html