我們有「公司」組成的名稱,地址,城市,國家的SQL Server 2008數據庫表,郵編和電話SQL查找可能的匹配,通過名稱和地址
用戶訪問我們的表單,提交他們的信息,我們需要確定它們是否在我們的數據庫記錄或新公司中。
示例數據
我寫了一個SQL存儲過程,將檢查由國家/郵編,姓名,地址,城市/電話的比賽。這4場比賽中的任何一場命中都會觸發一條記錄被退回。
然後,使用VB.NET,我打算根據匹配命中的點來分配點。例如,名稱匹配將是20分......但是州/郵編匹配可能只有5或10分。
示例SQL腳本。
很明顯,我將使用參數來取代數據點,而不是硬編碼。
你會注意到我正在清理地址只是數值...而且名字是阿爾法。
WITH Match_StateZip as ( select ID from vwCompanies where State = 'IA' and ZipCode like '25885%' ), Match_Name as ( select ID from vwCompanies where Name like 'Best%Service%Ever%' /* Excluded Corp, Ltd, Inc, and non-alpha */ ), Match_Address as ( select ID from vwCompanies where AddressLine1 like '%0429%9%' /* Only Numeric Portion */ ), Match_CityPhone as ( select ID from vwCompanies where City like 'Fort%Lauderdale%' and MainPhone like '%658%' /* First 3 (not area code) */ ) select comp.ID, Name, MainPhone, AddressLine1, City, State, ZipCode, m_sz.ID 'm_sz', m_n.ID 'm_n', m_a.ID 'm_a', m_cp.ID 'm_cp' from vwCompanies comp left join Match_StateZip m_sz on comp.ID = m_sz.ID left join Match_Name m_n on comp.ID = m_n.ID left join Match_Address m_a on comp.ID = m_a.ID left join Match_CityPhone m_cp on comp.ID = m_cp.ID where m_sz.ID != '' OR m_n.ID != '' OR m_a.ID != '' OR m_cp.ID != ''
我的問題
是否有更好的方法來寫這個SQL腳本,以找到更好的匹配,和/或更準確?