• ベストアンサー

ACCESS:半角、全角空白スペースを含む文字列の検索

Access2003にて、空白、全角スペースを含む文字列の 検索を行う方法について教えて下さい。 他社から送られてきた検索用のリスト(xls形式)を元に、 商品の検索を下記のフィールドから行っています。 商品フィールドに商品名が約30万行格納されています。 格納されている商品名は間に 半角スペース、全角スペース、スペース無し など不規則な入力になっています。 (例:東芝除湿機、日立 掃除機、Canon 複合機…) 商品名の検索時に文字列の半角スペースと全角スペースの 指定が異なっていると検索が行えないため困っています。 (例:Canon 複合機で検索時、格納データはCanon 複合機のため検索結果なしになる) テーブルのスペースを統一、もしくは削除する方法などありますでしょうか。 皆様のお知恵をお貸し下さい。 なお、クエリでtrimを使用したスペースの削除は行ったのですが、 検索時に頻回にErrorが出るようになり断念しました。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

replace("東芝除湿機、日立 掃除機、Canon 複合機"," ","",vbtextcompare) で 半角・全角かかわらず全て取り去りますので テーブル作成クエリなどで処理されたら良いと思います。 そのテーブルをもう更新しないのならインデックスをつければ 検索は速くなると思います。 でも他から来たデータって色々と気をつけないと・・・

syouhei71
質問者

お礼

ありがとうございます。 早速試させて頂きます。

その他の回答 (2)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

#1です。 NULLのときエラーになりますね。 下記を追加してください。 --- If IsNull(strD) Then mDelSP = Null Exit Function End If

syouhei71
質問者

お礼

ありがとうございます。 式の意味を勉強しながら使わせて頂きます。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

原始的な方法しか思いつきませんが 1文字づつ空白判定し削除します。 ---- Public Function mDelSP(strD As String) As String Dim strW As String Dim strC As String Dim i As Long strW = "" For i = 1 To Len(strD) strC = Mid(strD, i, 1) If strC <> " " And strC <> " " Then strW = strW & strC End If Next i mDelSP = strW End Function

関連するQ&A

専門家に質問してみよう