2010-02-26 97 views
0

我從源接收數據文件我無法控制(政府),並在記錄中他們有一個公司名稱字段,我實際上需要與現有的關聯公司記錄在我的數據庫中。我擔心某些名稱會因「微軟公司X」等微小差異而有所不同。 vs'公司X公司'。Sql Server如何做從字符串值的排序規則鍵

所以我最初的想法是創建一個基於名稱ToLower()的排序規則鍵字段,並應用正則表達式來去除所有空格和特殊字符。

有沒有更好的方法適用於此?

回答

1

可能有效,但可能存在錯誤匹配,無法阻止它們,因爲您只有算法解決方案。你最好的選擇是創建一個別名錶。將每個公司名稱和FK的每個變體都包含到真實公司的ID中。還包括一個實際名稱的行。

AliasID CompanyID CompanyAlias 
------- --------- ------------ 
1  1   Company X, Inc <<--actual real company name 
2  1   Company X Inc 
3  1   Company X 

如果導入數據時未在此表中找到一個確切的名稱匹配,您可以使用算法或其他,或使用人工輸入等,以找到一個匹配或產生一個新的公司。此時插入到別名表中。如果您因爲某種原因發現您的匹配錯誤,您可以更改別名表以進行正確的映射。如果你只使用一種算法,你需要包括例外,你的算法會變得越來越大,越來越慢。有了這張表和一個好的索引,找到你的比賽應該是快速的。

+0

我把你的建議和我原來的想法結合起來,而不是使用AliasID作爲序列,它是一個具有'HashBytes('md5',Trim&Lower(CompanyName))'值的varbinary列,當我篩選數據時,我可以輕鬆確定是否有任何值不在表格中並添加別名記錄。 – 2010-03-03 15:30:03