2016-08-01 84 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