问题
用户经常输入"国家/地区名称"字符串到"城市名称"领域。启发式地,这似乎是一种非常普遍的做法。例如,用户可能会把台北台北"在城市名称的时候只有" TAIPEI"应该输入,然后国家将是" TAIWAN"。我正在努力为这个特定字段聚合这些实例(您的帮助将允许我将其扩展到其他列和表),然后确定可能的排名与严格的" country" " city"中的名字字段。
我试图利用两个表来跟踪数据验证问题。 Tbl1被命名为" Customer_Address"由地理列组成,如(Customer_Num,Address,City_Name,State,Country_Code,Zipcode)。 Tbl2命名为" HR_Countries"是2位ISO国家代码的清洁表及其相应的名称值(黎巴嫩,台湾,中国,叙利亚,俄罗斯,乌克兰等)以及目前尚未使用的其他一些领域。
最初的步骤是查询" Customer_Address"找到City_Names LIKE一系列OR语句(LIKE'%CHINA',或LIKE' TAIWAN',OR等等)并计算City_Name与指定country_name类似的出现次数字符串我通过它,结果非常好。我已经编写了一些例外情况来处理类似于"黎巴嫩,OH和#34;所以我的整体结果在第一阶段是令人满意的。
部分查询执行从Tbl1到Tbl2的LEFT连接,以便根据对tbl1的查询添加来自tbl2的风险评级:
LEFT JOIN tbl2 risk
ON INSTR(addr.CITY_NM, risk.COUNTRY_NAME,1) <> 0
CountryNameInCity CountOfOccurences RR
China 15 High
Taiwan 2000 Medium
Japan 250 Low
Taipei, Taiwan 25 NULL
Kabul, Afghanistan 10 NULL
Shenzen China 100 NULL
Afghanistan 52 Very High
CountryName CountryCode RR
China CN High
Taiwan TW High
Iraq IQ Very High
Cuba CU Medium
Lebanon LB Very High
Greece GR High
所以我的问题如下:
1)不是手动传递国家代码的一系列OR语句,而是使用Tbl2作为匹配&#34; LIKE&#34;推动查询?
2)你能推荐一种更好的方法来比较查询的输出(参见Tbl1示例)并确保多个字符串(台北,台湾等)被适当地聚合并且带回正确的&#39; RR&#39;评价
感谢您抽出时间对此进行审核并做出回应。