如何匹配帶有附加部分的字串,但如果它們具有不同的附加部分,則不匹配它們? 例如,如果我有一個名字列表,並且需要將其與我的資料庫中的名字進行匹配:
| My DataBase | Foreign table | | David James Malan Neeko | David James Malan | | David James Malan Neeko | David James Malan Mathew | | David James Malan Neeko | David jam Mlan |
我試過先進行完全匹配,如果沒有找到,我會繼續從外部名字字符串的末尾刪除一個字符,然後再次嘗試匹配,直到只有一個記錄與我的數據庫匹配。
這種技術可以匹配上表中的第一和第三個示例,但問題是它也匹配了第二個示例,因為程序每次都會刪除一個字符,直到整個Mathew單詞被刪除,然後找到了一個匹配,這在這種情況下是錯誤的匹配。
有什麼建議可以讓我只進行完全匹配或匹配但只有一邊有名字的附加部分,但如果它們都有兩個不同的名字部分,則不匹配它們。
可以使用SQL或Python來解決這個問題。
提前感謝您的幫忙。
這是非常低效的,將需要進行全表掃描。
ORDER BY
子句中的第一個表達式將首先對完全匹配進行排序,然後第二個表達式將對以整個搜尋字串開頭的name
#進行排序,然後是以name
開頭的搜尋字串。顯然,你可以直接將搜尋字串當作參數傳遞,而不是使用
SET @name_str = '...';
。這裡有一些範例的db<>fiddle。