比较来自不同表的两列

时间:2014-10-31 19:29:27

标签: sql replace compare

我知道这个问题已被问过好几次了,我确实已经读完了。但是,我的情况稍有不同,我仍然无法通过下面的SQL语句获得正确的结果。

我有两个表格如下所示:

TABLE A
######################################################################
   |   ID   | IP_Address    | Username  | Comments
----------------------------------------------------------------------  
    1       128.        abc     travel to US
    2       127.        dzd     author
    3       127.        abc     It's not redundant at all. Not offering a single function
    4       124.        deb     I just lost laptop.  How do I report it?
-----------------------------------------------------------------------



TABLE B
######################################################################
   |   keywords     |
----------------------------------------------------------------------  
    author
    How do I report
-----------------------------------------------------------------------

我的目的是当“注释”列与表B中的某个关键字部分匹配时,取出表A中的所有记录。

以下是查询:

SELECT ID, IP_Address, UserName, Comments FROM TABLEA
FULL JOIN TABLEB
ON TABLEA.Comments LIKE TABLEB.Keywords
WHERE TABLEA.Comments IS NOT NULL AND TABLEB.Keywords IS NOT NULL

它有效,但它只能提取完全匹配,而不是评论的一部分 在我的示例中,它提取了“作者”记录,但没有“我刚丢失笔记本电脑。我该如何举报?”记录。

有没有办法扭曲我的查询以满足我的要求?

由于

JPL

2 个答案:

答案 0 :(得分:2)

将%添加到LIKE子句

SELECT ID, IP_Address, UserName, Comments FROM TABLEA
FULL JOIN TABLEB
ON TABLEA.Comments LIKE '%' + TABLEB.Keywords + '%'
WHERE TABLEA.Comments IS NOT NULL AND TABLEB.Keywords IS NOT NULL

答案 1 :(得分:1)

这将满足您的需求。

SELECT ID, IP_Address, UserName
FROM TABLE1 T1
CROSS APPLY (SELECT Keywords FROM Table2) T2
WHERE CHARINDEX(T2.Keywords,T1.Comments) >0

CROSS APPLY可以替换为完整联接,但如果第二个表中有更多列,则交叉应用效果会更好。