识别相似的名字,例如:"AAA BBB CCC" 和 "BBB AAA CCC" 是同一个人

Identify similar names eg: "AAA BBB CCC" and "BBB AAA CCC" are the same people

我目前正在处理一个问题。我有一列名称。下面是场景

Anna Smith
Anna.Smith
Anna_Smith
Smith Anna

在上述情况下,我能够找出 Anna Smith,Anna.smith 和 Anna_Smith 是同一个人。但我找不到任何逻辑可以帮助我说 Smith Anna 与 Anna Smith 相同。

目前正在使用 MS-SQl 下面是逻辑

select name, isnull(lower(dbo.RemoveSpecialChars(substring(name, 0,      charindex('@',name)))),dbo.RemoveSpecialChars(name)) nospacename
   into #sheet32
   from [dbo].['Sheet3 (2)$']

我正在删除所有像

这样的字符

".", ";"," "

出现在名字中并将它们连接成一个名字 因此 Anna Smith、Anna.Smith、Anna_Smith 都将转换为 AnnaSmith。 RemoveSpecialChars - 是用户定义的函数

有什么方法可以让我知道 Anna Smith 和 Smith Anna 是同名吗?目前正在研究 MS-SQl。 Excel、C# 和 VBA 中给出的解决方案也很好。

谢谢, 幸

正如 Ron 提到的,拆分单词可能是一种简单的方法。 (这是在 c# 中)

        //String you want to check
        string names = "Smith Anna";

        //Split
        char[] splitters = { '-', '_', '.',' '};
        List<string> result = names.Split(splitters).ToList();

        //Sort the list
        result.Sort();

然后只进行比较。