2014-10-31 97 views
0

我知道這個問題已經被多次詢問過了,而且我確實都讀過了。但是,我的情況有點不同,我仍然無法通過下面的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 
----------------------------------------------------------------------- 

我的本意是在表A中退出時,所有記錄時,註釋列部分匹配表中的關鍵字之一B.

這裏查詢:

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

添加%至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 
+0

儘管簡單,但我想不起來!有時候,休息一下可以解決所有問題! – JPL 2014-10-31 21:06:11

1

這會做你的需要。

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

CROSS應用可以與全加盟更換,但交叉如果在第二個表的詳細列更好地應用作品。

+0

謝謝LeeG。您的結果完全符合雷達的建議。 非常感謝。 – JPL 2014-10-31 21:21:29

相關問題