我有一个数据库表(Customers),其中包含以下列:
ID
FIRST_NAME
MIDDLE_INIT
LAST_NAME
FULL_NAME
我还有一个数据库表(ENG),其中包含以下列:
ID
ENG_NAME
我想用ENG.ENG_NAME
表中的FULL_NAME
条目替换所有CUSTOMERS
条目
这是问题所在
ENG_NAME
通过网络表单被手工卡住,因此没有一致性。例如,一行可能包含" Robin Hood"。另一个" Hood,Robin L"。另一个" Robin L Hood"。
我想搜索CUSTOMERS
表格中的条目,找到一个匹配的匹配项,然后将ENG.ENG_NAME
替换为CUSTOMERS.FULL_NAME
。
示例:
ENG table CUSTOMERS table
ID ENG_NAME ID FULL_NAME FIRST_NAME MIDDLE_INIT LAST_NAME
================ ==================================================================
1 Hood,Robin 1 Robin L Hood Robin L Hood
2 Rob Hood 2 Maid M Marion Maid M Marion
3 Marion M 3 Friar F Tuck Friar F Tuck
4 Rob Garza 4 Robert A Garza Robert A Garza
根据上面的数据,我希望ENG_NAME
列被替换为:
ENG table
ID ENG_NAME
====================
1 Robin L Hood
2 Robin L Hood
3 Maid M Marion
4 Robert A Garza
有关如何做到这一点的任何想法? 感谢
答案 0 :(得分:1)
这不是一项简单的任务,我会从找到一个好的C#(或任何.NET)算法来检测类似的字符串部分。
然后看看将C#代码编译成SQL存储过程并使用SQL Server调用该代码。然后,此CLR代码可以将结果写入表格,供您分析并随意执行任何操作。
答案 1 :(得分:0)
我会使用Levenshtein距离在.NET中执行此操作。
从1开始,你将有一些关系,你需要决定 然后转到2,3,4 ...
你可以在CLR中做,但你打算怎么处理关系?你会有联系。你怎么决定什么时候不匹配?
我会将它放在新专栏中,以便您拥有原始数据的历史记录 或FK对客户表的引用