2015-07-21 235 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)