【问题标题】:Identify similar names eg: "AAA BBB CCC" and "BBB AAA CCC" are the same people识别相似的名字,例如:“AAA BBB CCC”和“BBB AAA CCC”是同一个人
【发布时间】:2015-03-18 04:13:16
【问题描述】:

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

Anna Smith
Anna.Smith
Anna_Smith
Smith Anna

在上述情况下,我能够确定 Anna Smith、Anna.smith 和 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 给出的解决方案也很好。

谢谢, 幸

【问题讨论】:

  • 我想您可以拆分单词,如果单词相同,则无论顺序如何,都可以将名称命名为相同。但这有多大意义?有些名字可以是名字也可以是姓氏;并且George Alexander 可能与Alexander George 不同

标签: c# sql-server excel vba


【解决方案1】:

正如 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();

然后执行比较。

【讨论】:

  • 谢谢 :) 从事类似的工作
  • @maverick 只是一个快速的,如果你觉得你的问题得到了回答,你应该将答案标记为已接受。这样,其他用户可以看到您的问题已得到解答,并且您无需等待进一步的答案:) - 否则请随意补充答案或发布您自己的答案,如果它可能对其他人有帮助:)
  • 哦忘记了。道歉:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多