编码从另一个表中替换错误拼写错误

时间:2018-05-07 23:26:20

标签: sql-server sql-server-2014

使用SQL Server 2014,如何更正拼写列中的值(需要代码)?

以下是我的数据示例:

 fID    Country 
 -------------------------------
 1      pakistan 
 2      bangladish (mar, 2016)
 3      vitnam (jul, 2015)
 4      hondoras (2000) 
 5      japan (apr, 2015) 
 6      marocco (2001)

如您所见,country列中存在拼写错误。我需要的是修复这些拼写错误而不改变其他任何东西 - 只是国名。

像这样:

CorrectCountry
---------------
Morocco 
Bangladesh 
Vietnam 
Honduras

我已经创建了一个包含拼写正确的国家/地区名称的表格。但我不确定如何使用它,或者有任何具体的方法来纠正它。

注意:我有超过2000条记录 - 我无法手动修复它,国家也是57个名字

理想的表格:

fID     Country 
--------------------
 1      Pakistan 
 2      Bangladesh (mar, 2016)
 3      Vietnam (jul, 2015)
 4      Honduras (2000) 
 5      Japan (apr, 2015) 
 6      Morocco (2001)

1 个答案:

答案 0 :(得分:0)

为此请求提供完全自动化的解决方案非常困难。 您可以在多次迭代中更正数据

步骤1:标记完全匹配的记录。这有助于减少手动交互所需的记录数量。

UPDATE t1 
SET t1.IsValidated = 1
FROM country t1
INNER JOIN CorrectCountry t2 ON T2.Country = T1.Country
WHERE ISNULL(t1.IsValidated,0) = 0
GO

步骤2:使用SOUNDEX标记匹配的记录。始终需要手动验证。在进行更新之前浏览选择列表中的数据

SELECT * FROM country t1
INNER JOIN CorrectCountry t2 ON SOUNDEX(T2.Country) = SOUNDEX(T1.Country)

UPDATE t1 
SET t1.Country = t2.Country
    , t1.IsValidated = 1
FROM country t1
INNER JOIN CorrectCountry t2 ON SOUNDEX(T2.Country) = SOUNDEX(T1.Country)
WHERE ISNULL(t1.IsValidated,0) = 0

GO

第3步:还有待处理的内容?我建议手动比较

SELECT * FROM country t1
WHERE ISNULL(t1.IsValidated,0) = 0