blu*_*blu 5 sql string fuzzy-search reference match
我搜索了这些问题,并提出了类似的问题,但没有我认为可以使用的解决方案。这个问题类似于模糊匹配......有点。我需要帮助来比较两个表。一个表是公司参考表,另一个表是每天导入原始公司数据的表。参考表很干净,并且有一个与每个公司相关联的公司 ID。导入的每日数据没有公司 ID。我想做的是让每日数据引用company_name上的“公司参考表”,并根据company_name更新“公司表”的列company_state。不幸的是,每天传入的company_name 数据字符串并不总是相同。实际公司名称前面或后面可能有各种字符(az、0-9、+、-、.)和空格,每天的长度都不同,所以我不相信我可以使用 charindex 来清理它。
公司参考表
company_id company_name company_state
1 Awesome Inc NY
2 Excel-guru AL
3 Clean All MI
Run Code Online (Sandbox Code Playgroud)
公司表
company_name company_state
abc123 Awesome Inc NULL
Excel gur xyz-987 NULL
Clean All Cleanall NULL
Run Code Online (Sandbox Code Playgroud)
我想要它做的就是这个。有点像模糊匹配。
公司表
company_name company_state
abc123 Awesome Inc NY
Excel gur xyz-987 AL
Clean All Cleanall MI
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢。谢谢。
小智 3
尝试下面的查询来更新公司表:
update company c INNER JOIN company_ref cr
ON c.company_name LIKE concat('%', cr.company_name, '%')
SET c.company_state = cr.company_state;
Run Code Online (Sandbox Code Playgroud)
另一种方法就是使用SELECT
SELECT c.*, cr.* FROM company c INNER JOIN company_ref cr
ON c.company_name LIKE concat('%', cr.company_name, '%');
Run Code Online (Sandbox Code Playgroud)
SQL小提琴:http://sqlfiddle.com/#!2/ec76f /1