C# 识别相似的名称,例如:“引用”;AAA BBB CCC“;及;BBB AAA CCC“;是同一个人吗

C# 识别相似的名称,例如:“引用”;AAA BBB CCC“;及;BBB AAA CCC“;是同一个人吗,c#,sql-server,excel,vba,C#,Sql Server,Excel,Vba,我目前正在解决一个问题。我有一列名字。下面是场景 Anna Smith Anna.Smith Anna_Smith Smith Anna 在上述情况下,我能找出安娜·史密斯,安娜·史密斯和安娜·史密斯是同一个人。但我找不到任何逻辑可以帮助我说史密斯·安娜和安娜·史密斯是一样的 当前正在使用MS SQl 下面是逻辑 select name, isnull(lower(dbo.RemoveSpecialChars(substring(name, 0, charindex('@',name

我目前正在解决一个问题。我有一列名字。下面是场景

Anna Smith
Anna.Smith
Anna_Smith
Smith Anna
在上述情况下,我能找出安娜·史密斯,安娜·史密斯和安娜·史密斯是同一个人。但我找不到任何逻辑可以帮助我说史密斯·安娜和安娜·史密斯是一样的

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

select name, isnull(lower(dbo.RemoveSpecialChars(substring(name, 0,      charindex('@',name)))),dbo.RemoveSpecialChars(name)) nospacename
   into #sheet32
   from [dbo].['Sheet3 (2)$']
我正在删除所有像这样的角色

“,”;“,”

发生在名称中,并将其连接为一个名称 因此,安娜·史密斯,安娜·史密斯,安娜·史密斯都将转变为安娜·史密斯。RemoveSpecialChars-是一个用户定义的函数

有没有办法让我知道安娜·史密斯和史密斯·安娜是同一个名字?目前正在使用MS SQl。用Excel、C#和VBA给出的解决方案也很好

谢谢,
Sachi

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

//要检查的字符串
字符串名称=“Smith Anna”;
//分裂
char[]拆分器={'-','.','.',''.'};
列表结果=names.Split(spliters.ToList();
//对列表排序
result.Sort();

然后进行比较。

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

//要检查的字符串
字符串名称=“Smith Anna”;
//分裂
char[]拆分器={'-','.','.',''.'};
列表结果=names.Split(spliters.ToList();
//对列表排序
result.Sort();

然后进行比较。

我想你可以把单词分开,如果单词是一样的,你可以不分顺序地叫相同的名字。但这有什么意义呢?有些名字可以是名字,也可以是姓氏;而
George Alexander
可能与
Alexander George
不同,我想你可以把单词分开,如果单词是相同的,不管顺序如何,你都可以叫相同的名字。但这有什么意义呢?有些名字可以是名字,也可以是姓氏;而且
George Alexander
可能与
Alexander George
Thank you:)从事类似工作的人不同lines@maverick简单地说一下,如果你觉得你的问题得到了回答,你应该将答案标记为已接受。通过这种方式,其他用户可以看到您的问题已经得到了回答,您不需要等待进一步的回答:)-否则,请随时补充答案或发布您自己的答案,如果这可能会帮助其他人:)哦,忘了这么做。道歉:)谢谢:)正在处理类似的问题lines@maverick简单地说一下,如果你觉得你的问题得到了回答,你应该将答案标记为已接受。通过这种方式,其他用户可以看到您的问题已经得到了回答,您不需要等待进一步的回答:)-否则,请随时补充答案或发布您自己的答案,如果这可能会帮助其他人:)哦,忘了这么做。道歉:)
        //String you want to check
        string names = "Smith Anna";

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

        //Sort the list
        result.Sort();