单列查找相似的值

我在EXCEL / SQL表中有一个列示例数据如下。 想分组类似的logging。 在Excel或SQL解决scheme应该没问题。

GOPAL Ramesh A.GOPAL SRINIVAS Ramesh Reddy G.SRINVIASA RAO 

预期的输出可能按相似性sorting

  GOPAL A.GOPAL Ramesh Ramesh Reddy SRINIVAS G.SRINVIASA RAO 

要么

 GOPAL Group1 A.GOPAL Group1 Ramesh Group2 Ramesh Reddy Group2 SRINIVAS Group3 G.SRINVIASA RAO Group3 

这不仅仅是一个完整的答案,而是可能引导你朝正确的方向发展。

您将必须定义一个相似性度量标准,比较两个string并返回一个量化它们之间相似度的值。 例如,参见用于可变长度string的更好的相似性sortingalgorithm 。 你如何实现在SQL查询中使用取决于你正在使用的DBMS。 您还必须build立您要定义为“足够接近”的此度量标准的阈值。

然后你可以写一个SQL查询,像这样:

 select a_val as group, b_val as stringval from ( select a_val, b_val, similarity from ( select a.stringval as a_val, b.stringval as b_val, sim_metric(a.stringval, b.stringval) as similarity from stringlist as a, stringlist as b where b.stringval >= a.stringval ) as sim where similarity > similarity_threshold ) as grp order by a_val; 

其中sim_metric()是您的相似度函数,而similarity_threshold是您select的阈值。 使用每组相似名称中的一个名称作为组名。