プロが教える店舗&オフィスのセキュリティ対策術

アクセスで下記のような文字列中の空白を削除する方法を教えてください。

「東○京」、「東○○京」、「東○○○京」のように(○はスペースを表しています。)、スペースの数も様々なものを「東京」にしたいのですが・・・

なお、編集→置換ではなく、関数を使ったものでお願いします。

A 回答 (3件)

ユーザー定義関数を使うのはいかがでしょうか。

標準モジュールに記述して、クエリで使用してください。
当方のAccess2000にはSubstituteがありませんので、Replaceをループしています。(入力ミスがあると、無限ループになってAccessがフリーズしますのでご注意下さい)
Function cutSpace(target As String)
Dim buf As String

buf = target
Do While InStr(buf, " ")
buf = Replace(buf, " ", "")
Loop
Do While InStr(buf, " ")
buf = Replace(buf, " ", "")
Loop
cutSpace = buf
End Function
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
アクセスは初心者で、ご回答いただいたことは少々難しく・・・
今後、お教えいただいたようなことが使いこなせるよう頑張ります。

お礼日時:2008/11/06 22:16

単純にReplace関数を使うでは問題あるのかしら?


全角空白をブランク文字列に置き換える
もし半角もあるなら半角空白1文字をブランク文字列に置き換え

SELECT Replace(Replace(都道府県,"○","")," ","") AS 都道府県名
FROM テーブル名
    • good
    • 0
この回答へのお礼

ありがとうございました。早速、やってみましたところできました。
ご丁寧なご回答に感謝いたします。

お礼日時:2008/11/06 22:14

似たような機能の関数はTrimしかないとおもう。

それもこのケースでは使えない。ユーザー関数でも作るよりほかないと思う。
質問は 「東○○京○へ行きます」とあるようなケースは無いのですか。1語句だけがそのフィールドに入っているのですか。質問にはっきりさせないと。質問が大雑把な表現では回答を誤る。
例 半角スペースのみ
Function blkdl(a)
blkdl = Replace(a, " ", "", , , vbBinaryCompare)
End Function
全角も混合するなら、全角スペースでReplaceをネスト。
このフィールドにNullがある場合はエラーになるので、別途手当てが必要。

この回答への補足

「東京」と記しているのだから「東京」であるにすぎない。
難しく、もしくはひねくれて考えすぎか、文章の読解力の問題か?
いや、素直さか・・・

補足日時:2008/11/06 22:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!