2015-07-21 241 views
0

可以說我有2個表SQL連接字符串匹配

ID  Product 
---------------- 
micrsoft sql 
cisco 


ID  Product 
---------------- 
sql 
cisco agent 
flash 

我需要編寫一個只返回「閃光」作爲輸出becasue它不會對錶1匹配的話思科和微軟的查詢在另一張桌子上有匹配,因此需要丟棄。

這是更多的內部聯接,但使用模式/字符串匹配/包含。這些字符串不一定是絕對匹配,也可以是一個子集。例如。你有一個表中的思科和另一個表中的思科代理。

/******的腳本SelectTopNRows從SSMS命令******/

SELECT 
     [Product] 
    FROM t1 INNER JOIN t2 

ON t1.Product= t2.Product 
order BY Product 

只會satisy那些產品,其價值完全匹配。但我需要查詢甚至部分匹配

回答

1

您可以使用like用於此目的:

SELECT t2.[Product] 
FROM t2 LEFT JOIN 
    t1 
    ON t1.Product LIKE '%' + t2.Product + '%' OR 
     t2.Product LIKE '%' + t1.Product + '%' 
WHERE t1.Product IS NULL 
ORDER BY t2.Product; 

業績不會好,所以我希望你不要有太多的數據。

+0

有大約200,000行 – vardha

+0

你爲什麼要加入 「t1.product爲空」? – vardha

+0

爲了得到沒有匹配的行,如你的問題所述。 –

0

試試這個:

select Id, Product 
from table2 t2 
where ID Not IN (Select IDFrom table1)