- ベストアンサー
ACCESS:半角、全角空白スペースを含む文字列の検索
Access2003にて、空白、全角スペースを含む文字列の 検索を行う方法について教えて下さい。 他社から送られてきた検索用のリスト(xls形式)を元に、 商品の検索を下記のフィールドから行っています。 商品フィールドに商品名が約30万行格納されています。 格納されている商品名は間に 半角スペース、全角スペース、スペース無し など不規則な入力になっています。 (例:東芝除湿機、日立 掃除機、Canon 複合機…) 商品名の検索時に文字列の半角スペースと全角スペースの 指定が異なっていると検索が行えないため困っています。 (例:Canon 複合機で検索時、格納データはCanon 複合機のため検索結果なしになる) テーブルのスペースを統一、もしくは削除する方法などありますでしょうか。 皆様のお知恵をお貸し下さい。 なお、クエリでtrimを使用したスペースの削除は行ったのですが、 検索時に頻回にErrorが出るようになり断念しました。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
replace("東芝除湿機、日立 掃除機、Canon 複合機"," ","",vbtextcompare) で 半角・全角かかわらず全て取り去りますので テーブル作成クエリなどで処理されたら良いと思います。 そのテーブルをもう更新しないのならインデックスをつければ 検索は速くなると思います。 でも他から来たデータって色々と気をつけないと・・・
その他の回答 (2)
- o_chi_chi
- ベストアンサー率45% (131/287)
#1です。 NULLのときエラーになりますね。 下記を追加してください。 --- If IsNull(strD) Then mDelSP = Null Exit Function End If
お礼
ありがとうございます。 式の意味を勉強しながら使わせて頂きます。
- o_chi_chi
- ベストアンサー率45% (131/287)
原始的な方法しか思いつきませんが 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
お礼
ありがとうございます。 早速試させて頂きます。