我想比較一系列字符串,如以下SQL在MS Access比較兩個字符串
rodeo rodas
carrot crate
GLX GLX 1.1
GLX glxs
的對比不必區分 我想寫一個sql我在哪裏更新敏感第一個字符串與第二個字符串,如果它們大致匹配除了第二個字符串,其他所有例子都匹配。我想寫一個查詢來更新字符串,除了第二個字符串。
這可能直接在查詢中ACCESS
感謝
我想比較一系列字符串,如以下SQL在MS Access比較兩個字符串
rodeo rodas
carrot crate
GLX GLX 1.1
GLX glxs
的對比不必區分 我想寫一個sql我在哪裏更新敏感第一個字符串與第二個字符串,如果它們大致匹配除了第二個字符串,其他所有例子都匹配。我想寫一個查詢來更新字符串,除了第二個字符串。
這可能直接在查詢中ACCESS
感謝
除了使用LIKE,這直接是不可能在MS Access查詢。您需要實現某種Levenshtein Distance函數以進行近似匹配。
您無法直接在Access中測量兩個字符串的距離。你必須實現一個合適的度量來計算距離 - 有很多不同的方法來計算它。
編輯:你可能想看this Wikipedia entry其中描述的可能性非常好。 Levenshtein距離米奇建議是一個非常好的和簡單的解決方案來解決這個問題。
你所試圖做的是所謂的模糊匹配,這是相當複雜的代碼 - 參見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中。
性能如何?我已經在C#中實現了該算法,並且它看起來很毛茸茸。 – blparker 2009-10-26 15:48:10