识别类似的名字,例如:“AAA BBB CCC”和“BBB AAA CCC”是相同的人
我目前正在解决一个问题。 我有一列名字。 以下是情况
Anna Smith Anna.Smith Anna_Smith Smith Anna
我以上的情况下,我能弄清楚安娜史密斯,安娜。史密斯和安娜史密斯是同一个人。 但我无法find任何可以帮助我说史密斯安娜和安娜史密斯一样的逻辑。
目前使用下面的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中给出的解决scheme也很好。
谢谢,萨奇
正如罗恩提到的那样,分词可能是一个简单的方法。 (这是在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();
然后只是进行比较。