使用Like比较多个模式

时间:2010-01-29 16:33:23

标签: tsql sql-server-2008

我希望能够根据另一个表中包含的多个模式匹配单个字段,类似于LIKE比较的IN子句。以下查询显然不起作用,但它表达了我想要完成的任务。

SELECT * 
FROM TableA 
WHERE TableA.RegCode Like (
    SELECT '%' + TableB.PartialRegCode + '%'
    FROM TableB)

如果有更好的方法,我宁愿不诉诸游标。

2 个答案:

答案 0 :(得分:4)

SELECT * 
FROM TableA a
INNER JOIN TableB b on a.RegCode like '%' + b.PartialRegCode + '%'

答案 1 :(得分:1)

如果您希望返回与任何模式匹配的行,则应该可以使用:

SELECT *
FROM TableA
     JOIN TableB
     ON TableA.RegCode LIKE '%' + TableB.PartialRegCode + '%'

如果您希望返回与所有模式匹配的行,则应该可以使用:

SELECT *
FROM TableA
WHERE ID in
(
    SELECT TableA.ID
    FROM TableA
         JOIN TableB
         ON TableA.RegCode LIKE '%' + TableB.PartialRegCode + '%'
    WHERE COUNT(*) = (SELECT COUNT(*) FROM TableB)
    GROUP BY TableA.ID
)