- ベストアンサー
ACCESSのフィールドデータの照合について
テーブルAのフィールドAとテーブルBのフィールドBの文字をAを基準に1文字づつ全文字を照合しアンマッチ文字が3文字以上発生したら-1を1及び2文字発生は1を全て照合OKなら数字の0をクエリで行いたいのですが・・・ 最大21文字照合となります。 テーブルBのデータは手書文字をOCR変換した物でACCESS2000のマスターデータと照合しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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 上記のようなファンクションを作って、クエリから指定したらいかがでしょうか? (普通に使うためには長さが違うときの処理も考えておかなくてはいけないけど。)
その他の回答 (2)
- mitarashi
- ベストアンサー率59% (574/965)
少々大げさかもしれませんが、文字列の類似度を表す、レーベンシュタイン距離というのを使うと良いかもしれません。ご参考まで。 http://okwave.jp/qa/q6060346.html
お礼
決算処理でお礼が遅くなり申し訳ありません。 レーベンシュタイン距離初めて知りました。 ありがとうございます。 又、よろしくお願いします。
- layy
- ベストアンサー率23% (292/1222)
レコードの照合キーがあれば、クエリで 照合A:[テーブルA].[フィールドA] 照合B:[テーブルB].[フィールドB] 結果:ocrcomp([照合A],[照合B]) ocrcomp関数を自作する。 引数2つ取得して、その機能要件にあうようロジックを作成、 結果フラグを返す。 サイズが大きい方で1文字ずつループ、か マスタ側基準で1文字ずつループ、でもいいでしょう。
お礼
決算処理でお礼が遅くなり申し訳ありません。 ループ処理をクエリで指定して出来ました。 又、宜しくお願いします。
お礼
お礼が遅くなり申し訳ありません。 ループ処理をクエリで指定することにより出来ました。 ありがとうございます。