我正在寻找有关如何解决同名拼写错误问题的建议。 我有一个公司名称的SQL Server数据库,有些公司是相同的,但拼写是不同的。
例如:
Building Supplies pty
Buidings Supplies pty
Building Supplied l/d
问题在于变异中没有明显的一致性。有时候它是一个额外的空间。其他时候它是一个额外的空间。
不幸的是我没有查找列表,因此我无法使用模糊LookUp。我需要创建清单。
人们用它来处理这个问题吗?
p.s我尝试搜索此问题,但似乎无法找到类似的线程
由于
答案 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创建一个有效的英语单词,你可能希望在某些时候开始自动应用这些单词。
要考虑的另一件事是保留所有经过验证的名称的列表,并使用它来检查这些名称的重复项,并防止在检查源数据时出现不必要的递归/加载。