3 回答

TA貢獻(xiàn)2003條經(jīng)驗 獲得超2個贊
評論太長了。
您確實無法以這種方式自動進(jìn)行名稱匹配。第一個明顯的問題是兩個員工可能有相同的名字,例如“Jane Doe”。那么就沒有辦法消除它們的歧義。
另一個問題是名稱可以顛倒?!啊巴旭R斯·威廉姆斯”和“威廉·托馬斯”一樣嗎?
您可以做的最好的事情是設(shè)置手動過程。這可能采取將所有名稱轉(zhuǎn)儲到電子表格中并手動選擇規(guī)范形式的形式。然后,用兩個新表加載數(shù)據(jù)庫:
Names
其中包含員工 ID 和正確的姓名形式。Nicknames
其中有名稱的替代渲染。
這是一個手動過程,可能很費(fèi)力。對于大量名稱,肯定有可以提供幫助的工具?;ㄙM(fèi)數(shù)百美元,您甚至可能在對其他工具進(jìn)行適當(dāng)調(diào)查之前就完成了。

TA貢獻(xiàn)1853條經(jīng)驗 獲得超9個贊
你可以從這樣的事情開始:
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 '%'))

TA貢獻(xiàn)1826條經(jīng)驗 獲得超6個贊
有幾個解決方案。如果您可以更改表以使其EmployeeID作為主鍵并將其也用作另一個表中的外鍵,那么那將是最好的。除此之外,您可以嘗試以下查詢:
此 sql 用于 Mysql 數(shù)據(jù)庫
select * from
T1 join T2
on (
concat(T2.Firstname,T2.Lastname) like concat('%',T1.Firstname, T1.Lastname,'%')
OR
concat(T2.Lastname,T2.Firstname) like concat('%',T1.Firstname, T1.Lastname,'%')
)
添加回答
舉報