SQL Server:修复拼写错误的商家名称

时间:2014-10-30 05:47:30

标签: sql sql-server tsql

我正在寻找有关如何解决同名拼写错误问题的建议。 我有一个公司名称的SQL Server数据库,有些公司是相同的,但拼写是不同的。

例如:

Building Supplies pty
Buidings Supplies pty
Building Supplied l/d 

问题在于变异中没有明显的一致性。有时候它是一个额外的空间。其他时候它是一个额外的空间。

不幸的是我没有查找列表,因此我无法使用模糊LookUp。我需要创建清单。

人们用它来处理这个问题吗?

p.s我尝试搜索此问题,但似乎无法找到类似的线程

由于

2 个答案:

答案 0 :(得分:3)

您可以将SOUNDEX() DIFFERENCE()用于此目的。

DECLARE @SampleData TABLE(ID INT, BLD VARCHAR(50), SUP VARCHAR(50))

INSERT INTO @SampleData 
SELECT 1, 'Building','Supplies'
UNION
SELECT 2, 'Buidings','Supplies'
UNION
SELECT 3, 'Biulding','Supplied'
UNION
SELECT 4, 'Road','Contractor'
UNION
SELECT 5, 'Raod','Consractor'
UNION
SELECT 6, 'Highway','Supplies'

SELECT *, DIFFERENCE('Building', BLD) AS DIF  
FROM @SampleData
WHERE DIFFERENCE('Building', BLD) >= 3

<强>结果

ID  BLD         SUP        DIF
1   Building    Supplies    4
2   Buidings    Supplies    3
3   Biulding    Supplied    4

如果这符合您的目的,您可以编写更新查询以相应地更新所选记录。

答案 1 :(得分:0)

除了SOUNDEX()DIFFERENCE()选项(这是一个非常好的btw!),你可以更多地研究SSIS。

如果你的数据是英文的,而不仅仅是人的名字,你可以用这些组件做很多事情:

术语提取

术语查找

模糊分组

模糊查找

主流程将是一个分层结构,您尝试以越来越不确定的方式查找重复项。您不需要自动应用它们,而是发送将更改应用到临时区域所需的所有名称和密钥,以便在需要时对其进行审核并进行审核。

如果你真的很聪明,你可以使用经过审查的数据作为制作包装的存储库&#34;学习&#34;,例如iu几乎不会在英语中有效,所以如果找到并将其更改为ui创建一个有效的英语单词,你可能希望在某些时候开始自动应用这些单词。

要考虑的另一件事是保留所有经过验证的名称的列表,并使用它来检查这些名称的重复项,并防止在检查源数据时出现不必要的递归/加载。