删除MS Access中不完全匹配的重复记录

问题描述:

我正在使用我导入到MS Access的Excel电子表格。它们包括客户姓名,出生日期,其他个人信息和订单信息。相同的客户通常有多个独特的订单。我创建的表格只是唯一的客户端(稍后我将链接到订单表),因此当我从Excel导入数据时,我想删除重复的客户端记录,保留一个。我想匹配他们的姓名和出生日期。我遇到的问题是某些客户端名称是不完全匹配的字符串。删除MS Access中不完全匹配的重复记录

例如:

Name   DOB 
----   --- 
DOE,JOHN  1/1/1960 
DOE,JOHN L  1/1/1960 
JOHNSON,PAT  12/1/1945 
SMITH,BETTY  2/1/1935 

在上面的一组,我想将其限制在短短三年的记录和除去多余李四记录。

我基本上只想看空间之前的客户端名称。 我不会反对完全失去中间的首字母,所以如果有办法将它切断,那也可以。我怎样才能做到这一点?

+0

您可以使用类似下面的查询,以获得名字。我在第一个'Doe,John'中假设根本没有空间。 MyName:IIf(InStr(1,[Name1],“”)= 0,[Name1],Left([name1],InStr(1,[name1],“”)-1)) –

听起来像你最简单的选择,实际上是切断任何中间启动。

您需要按如下方式处理。

  1. 使用选择DISTINCT当所有完成和说。

  2. 如果您使用InStr功能Syntax HERE,您可以搜索名字后面的空格。

  3. 然后,您可以选择仅使用左侧功能选择左侧的内容(左侧减1以免包含空白)。如果找不到空格,您将会遇到错误,因此只需添加iif语句即可输出名称。

  4. 查看完数据之后,需要删除第1列(在下面的例子中)以及将Expr1代码直接插入到iif语句中,所以最后只有两列:DOB和EXPR2(或重命名为名称)

下面是一个例子:

SELECT DISTINCT 
     Table1.Name, 
     Table1.DOB, 
     InStr(1,[Table1].[Name]," ",1) AS Expr1, 
     IIf([expr1]>0,Left([Table1].[Name],[Expr1]-1),[Table1].[Name]) AS Expr2 
    FROM Table1; 

鲁尼打我吧..

+0

谢谢!有效!发布后我意识到我不想完全切掉中间的首字母(因为其中一些也是“Jr.”或“Sr.”),但是我可以比较切掉的位和DOB,它将起作用大。 – mlaser