【发布时间】:2021-10-14 22:08:57
【问题描述】:
早上好,
我想连接两个表,但在某些情况下“名称”列不完全匹配。
例如,T1 中的名称是“Acosta, Joan”,但 T2 中的名称是“Perez Acosta, Joan”或“Acosta, Manuel Joan”。
我想加入这些表的主要原因是更新 T1 中的字段。
【问题讨论】:
-
提问时,您需要提供minimal reproducible example: (1) DDL 和样本数据填充,即 CREATE 表和 INSERT T-SQL 语句。 (2) 你需要做什么,即逻辑和你的代码尝试在 T-SQL 中实现它。 (3) 期望的输出,基于上面#1 中的样本数据。 (4) 您的 SQL Server 版本 (SELECT @@version;)。
-
你可能可以使用
SOUNDEX之类的东西,但真正的问题是数据;从数据的角度来看,'Acosta, Joan'和'Perez Acosta, Joan'不同名。真的,名字不是一个很好的唯一标识符(从认识其他人的人那里得到这个,他们不仅与我认识的其他人共享名字,而且他们的 DoB 和我们住在同一条街上) . -
如果你想一致地关联表,你应该首先解决修复关系的任务。否则,您基于模糊匹配执行的任何更新最终都可能对数据造成更大的破坏。
标签: sql sql-server join left-join inner-join