我需要根据它们共有的字符串数来匹配两个不同表中的两列。所以例如在第一栏我有:
================Table 1==============================
ID desc Year Month
123 food_drink 2016 8
345 shoe_bag 2016 8
678 001_toilet_paper 2015 7
910 Bags_of_thing 2015 6
======================table 2======================
ID Name Year month
ad drink_server 2016 8
ac shoe_shiny 2016 8
aa white_paper 2015 7
cc blue_bags 2015 6
是否可以通过在描述和名称中加入年,月和类似字符串来组合这两个表。因此,比较desc和name列以查看它们是否共有> = 5个字符串,然后:
===================================================
ID1 ID2 name desc Year Month
123 ad drink server food_drink 2016 8
678 aa white_paper 001_toilet_paper 2016 7
实质上,我需要一种方法来比较两列不同表之间的公共字符串数。感谢。
答案 0 :(得分:0)
您的问题归结为您的数据甚至不在First Normal Form中,因此很难在SQL中处理它。
这就是我要做的事情:
创建一个临时表,将字段拆分为单词。我认为ID是两个表中的关键。表格如下:
================表格1 ============================= =
ID1 word
123 food
123 drink
345 shoe
345 bag
...
=============表格2 ======================
ID2 word
ad drink
ad server
ac shoe
ac shiny
...
现在,您可以轻松找到共有5个字或更多字的ID:
SELECT ID1, ID2 FROM words1 JOIN words2 ON (word1.word = words2.word)
GROUP by ID1, ID2
having count(*) >= 5;
获得ID1和ID2后,您可以加入原始表并检索所需的其余数据。
答案 1 :(得分:0)
感谢所有回答的人。我最后使用R进行字符串匹配,使用以下链接中描述的技术: