2016-08-01 81 views
-1

有兩個類似的說明,它們有80%的相似性。我需要兩個相同的ID。如何讓兩個字符串具有相同的ID,如果它們具有80%的相似性?

還有其他的id描述有60%的相似性。這些應該保留自己的ID。一旦id desc被考慮和修改,不應該被視爲參考。此外 例如:

id  id description 
1  pepsodent 
2  pepsodent salt 
3  pepsod 
4  pepsodent and salt 
5  peps 

現在,pepsodent與pepsodent匹配salt.therefor都應當給予id作爲1 現在,作爲pepsodent鹽已被修改,則不能被用作基準的規模進一步。

+1

如果你能定義什麼80%的相似性和/或60%的相似性實際上意味着,我們可以提供幫助。您需要準確定義哪些規則可以確定哪些描述應該與另一個描述匹配 – kbball

+0

您可以顯示您爲此嘗試的現有SQL或VBA代碼嗎?這可能有助於引導人們給出更適合你的答案。 – halfer

+1

你可以嘗試實現這個算法,看看它是否滿足你確定「相似性」的需求http://stackoverflow.com/questions/4243036/levenshtein-distance-in-excel –

回答

0

正如我在上面的評論中所說的,您需要準確定義匹配兩條記錄的規則。在這個例子中,我給包含整個字符串'pepsodent'的任何記錄提供一個新ID。這些記錄的新ID將是999,但是,你認爲合適,你可以修改:

SELECT ID, ID_Description, 
CASE 
WHEN ID_Description LIKE 'Pepsodent%' THEN 999 
ELSE ID 
END AS New_ID 
FROM Table 
+0

匹配規則是任何2個描述之間的百分比相似度。如果%tage的相似性大於80%,那麼我們應該修改id,否則我們會從左到右讀取相應的字符。如果描述爲100個字符,則只有匹配80個字符時纔會更改。現在產品名稱也可以在聲明之間.i.e.不需要這些描述應該以'pepsodent'作爲上面的例子。即使是白色的空格也要考慮('_'或','或'!'等) – kaushik

+0

那麼,哪個ID應該與字符串'peds'匹配?所有這四個字符都包含在您的每個示例中 – kbball

+0

pepsodent在表格中排在第一位。因此它與表格的其餘部分相匹配。現在假設'pepsodent salt'已匹配,因此它的id爲1。不會進一步比較,也就是說它是固定的。然後將柿子餅與桌子的其餘部分進行比較。消費者應與消費者比較。要有一場比賽,我們假設超過80%應該是相似的。 – kaushik