如何使用部分名称进行匹配

我在选择匹配的主键时遇到问题。我的问题如下:


给定两张表,一张包含员工姓名及其员工 ID,另一张仅包含员工姓名(非标准格式)和相关信息。我想将它们组合在一起,但由于名称无法完全匹配。我能做些什么?


表格可能如下所示:


T1


FirstName    LastName     EmployeeID

  Newsom       Tom           001

  Greg         Thomas        002

  Henry        Peter         003

T2


 FirstName      LastName        HiringDate    Gender

   Tom          Newson Jr.      01/01/2019      M

   Greg          Thomas         01/01/2019      M

   Peter Sr.      Henry         01/01/2019      M

从表中可以看出,名称不匹配。


有没有办法将其正式化?名称可以是主键吗?


森林海
浏览 152回答 3
3回答

湖上湖

评论太长了。您确实无法以这种方式自动进行名称匹配。第一个明显的问题是两个员工可能有相同的名字,例如“Jane Doe”。那么就没有办法消除它们的歧义。另一个问题是名称可以颠倒。““托马斯·威廉姆斯”和“威廉·托马斯”一样吗?您可以做的最好的事情是设置手动过程。这可能采取将所有名称转储到电子表格中并手动选择规范形式的形式。然后,用两个新表加载数据库:Names其中包含员工 ID 和正确的姓名形式。Nicknames其中有名称的替代渲染。这是一个手动过程,可能很费力。对于大量名称,肯定有可以提供帮助的工具。花费数百美元,您甚至可能在对其他工具进行适当调查之前就完成了。

暮色呼如

你可以从这样的事情开始:     with t1 (fnam,lnam,eid) as (values ('Newsom','Tom','001'),('Greg','Thomas','002'),('Henry','Peter','003') ),     t2 (fnam,lnam,hired,gender) as (values ('Tom','Newson Jr.','01/01/2019','M'),('Greg','Thomas','01/01/2019','M'),('Peter Sr.','Henry','01/01/2019','M') ) select t1.lnam as fnam,       t1.fnam as lnam,       t1.eid as emp_id,       t2.hired as date_hired,       t2.gender as gender   from   t1   cross  join t2   where  ((t1.lnam like '%' concat t2.fnam concat '%' or         t1.fnam like '%' concat t2.lnam concat '%')         and        (t2.fnam like '%' concat t1.lnam concat '%' or         t2.lnam like '%' concat t1.fnam concat '%'))        or       ((t1.fnam like '%' concat t2.fnam concat '%' or         t1.lnam like '%' concat t2.lnam concat '%')        and        (t2.fnam like '%' concat t1.fnam concat '%' or         t2.lnam like '%' concat t1.lnam concat '%'))

跃然一笑

有几个解决方案。如果您可以更改表以使其EmployeeID作为主键并将其也用作另一个表中的外键,那么那将是最好的。除此之外,您可以尝试以下查询:此 sql 用于 Mysql 数据库select * from T1 join T2on (    concat(T2.Firstname,T2.Lastname) like concat('%',T1.Firstname, T1.Lastname,'%')    OR    concat(T2.Lastname,T2.Firstname) like concat('%',T1.Firstname, T1.Lastname,'%'))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python