• ベストアンサー

ACCESSのフィールドデータの照合について

テーブルAのフィールドAとテーブルBのフィールドBの文字をAを基準に1文字づつ全文字を照合しアンマッチ文字が3文字以上発生したら-1を1及び2文字発生は1を全て照合OKなら数字の0をクエリで行いたいのですが・・・ 最大21文字照合となります。 テーブルBのデータは手書文字をOCR変換した物でACCESS2000のマスターデータと照合しています。

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

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

function CompareStrings(strA,strB) as integer comparestrings = 0 for i = 0 to len(strA)-1 if mid(stra,i,1) <> mid(strb,i,1) then comparestrings = comparestrings + 1 next i end function 上記のようなファンクションを作って、クエリから指定したらいかがでしょうか? (普通に使うためには長さが違うときの処理も考えておかなくてはいけないけど。)

spkyouto
質問者

お礼

お礼が遅くなり申し訳ありません。 ループ処理をクエリで指定することにより出来ました。 ありがとうございます。

その他の回答 (2)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

少々大げさかもしれませんが、文字列の類似度を表す、レーベンシュタイン距離というのを使うと良いかもしれません。ご参考まで。 http://okwave.jp/qa/q6060346.html

spkyouto
質問者

お礼

決算処理でお礼が遅くなり申し訳ありません。 レーベンシュタイン距離初めて知りました。 ありがとうございます。 又、よろしくお願いします。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

レコードの照合キーがあれば、クエリで 照合A:[テーブルA].[フィールドA] 照合B:[テーブルB].[フィールドB] 結果:ocrcomp([照合A],[照合B]) ocrcomp関数を自作する。 引数2つ取得して、その機能要件にあうようロジックを作成、 結果フラグを返す。 サイズが大きい方で1文字ずつループ、か マスタ側基準で1文字ずつループ、でもいいでしょう。

spkyouto
質問者

お礼

決算処理でお礼が遅くなり申し訳ありません。 ループ処理をクエリで指定して出来ました。 又、宜しくお願いします。

関連するQ&A

専門家に質問してみよう