2009-10-06 26 views
0

我想比較一系列字符串,如以下SQL在MS Access比較兩個字符串

rodeo  rodas 
carrot crate 
GLX  GLX 1.1 
GLX  glxs 

的對比不必區分 我想寫一個sql我在哪裏更新敏感第一個字符串與第二個字符串,如果它們大致匹配除了第二個字符串,其他所有例子都匹配。我想寫一個查詢來更新字符串,除了第二個字符串。

這可能直接在查詢中ACCESS

感謝

回答

2

除了使用LIKE,這直接是不可能在MS Access查詢。您需要實現某種Levenshtein Distance函數以進行近似匹配。

+0

性能如何?我已經在C#中實現了該算法,並且它看起來很毛茸茸。 – blparker 2009-10-26 15:48:10

1

您無法直接在Access中測量兩個字符串的距離。你必須實現一個合適的度量來計算距離 - 有很多不同的方法來計算它。

編輯:你可能想看this Wikipedia entry其中描述的可能性非常好。 Levenshtein距離米奇建議是一個非常好的和簡單的解決方案來解決這個問題。

1

你所試圖做的是所謂的模糊匹配,這是相當複雜的代碼 - 參見http://search.cpan.org/dist/String-Approx/Approx.pm

我試圖用的SQL和VBA函數的組合這樣做的,放棄了,因爲有這麼多例外。最好我可以拿出來最後是:

(1)使用草莓perl連接到ms-access數據庫使用win32 perl模塊;

(2)從perl獲取兩個連接字符串的sql查詢;

(3)使用perl的String :: Approx模塊進行模糊字符串比較 - 對於完美匹配,返回1,對於不完全匹配返回小於1的遞減數字。

(4)通過sql查詢將模糊匹配數加回到ms-access中。