sql join字符串匹配

时间:2015-07-21 21:19:30

标签: sql sql-server-2008 inner-join contains

假设我有2张桌子

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


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

我需要编写一个只返回'flash'作为输出的查询,因为它在表1上没有匹配。单词cisco和microsoft在另一个表上有匹配,因此需要被丢弃。

这更多是内连接,但使用模式/字符串匹配/包含。字符串不一定是绝对匹配,也可以是子集。例如。你有一个表中的cisco和另一个表中的cisco代理。

/ ******来自SSMS ****** /

的SelectTopNRows命令的脚本
SELECT  
      [Product] 
  FROM t1 INNER JOIN t2

ON t1.Product= t2.Product
order BY Product

只会满足那些价值完全匹配的产品。但我需要查询甚至部分匹配

2 个答案:

答案 0 :(得分: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;

性能不佳,所以我希望你没有太多数据。

答案 1 :(得分:0)

试试这个:

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