我目前正在解决一个问题。我有一列名字。以下是场景
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 - 是用户定义的函数
有什么方法可以说出安娜史密斯和史密斯安娜的名字相同吗?目前正在开发MS-SQl。 Excel,C#和VBA中给出的解决方案也很好。
谢谢, Sachi
答案 0 :(得分:4)
正如罗恩所说,分裂这些词可能是一种简单的方法。 (这是在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();
然后只进行比较。