Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 删除MS Access中不存在的重复记录';不完全匹配_Ms Access - Fatal编程技术网

Ms access 删除MS Access中不存在的重复记录';不完全匹配

Ms access 删除MS Access中不存在的重复记录';不完全匹配,ms-access,Ms Access,我正在使用导入MS Access的Excel电子表格。它们包括客户姓名、出生日期、其他一些个人信息和订单信息。同一客户机通常有多个唯一的订单。我正在创建一个仅为唯一客户机的表(稍后我将链接到订单表),因此当我从Excel导入数据时,我希望删除重复的客户机记录,并保留一条。我想把他们的名字和出生日期匹配起来。我遇到的问题是,一些客户端名称是不完全匹配的字符串 例如: Name DOB ---- --- DOE,JOHN 1/1/1960 D

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

例如:

Name            DOB
----            ---
DOE,JOHN        1/1/1960
DOE,JOHN L      1/1/1960
JOHNSON,PAT     12/1/1945
SMITH,BETTY     2/1/1935
在上面的集合中,我想将其限制为仅三条记录,并删除多余的John Doe记录

我基本上只想看一下空格前的客户机名称。
我不反对完全丢掉中间的首字母,所以如果有办法把它切掉,那也行。我怎样才能做到这一点呢?

听起来你最简单的选择就是实际上切断任何中间初始值

您将希望按如下方式进行处理

  • 当所有操作都完成和完成时,使用Select DISTINCT

  • 如果使用InStr函数,可以搜索名字后面的空格

  • 然后,您可以选择使用left函数仅选择该函数的剩余部分(left减去1,不包括空格)。如果找不到空格,则会出现错误,因此添加和iif语句以仅输出名称

  • 查看数据后,您需要删除第1列(在下面的示例中),并将Expr1代码直接插入iif语句中,因此最后您将只有两列:DOB和Expr2(或重命名为Name)

  • 下面是一个例子:

        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;
    

    Wayne抢先告诉我了。

    在查询中,您可以使用以下内容来获取名称。我假设在第一个“Doe,John”中根本没有空间。我的名字:IIf(InStr(1,[Name1],”“)=0,[Name1],左([Name1],InStr(1,[Name1],”“)-1))谢谢!成功了!发帖后,我意识到我不想完全删掉中间的首字母(因为其中一些字母也是“Jr”或“Sr”),但我可以将删掉的字母和DOB进行比较,效果会很好。