我希望能够根据另一个表中包含的多个模式匹配单个字段,类似于LIKE比较的IN子句。以下查询显然不起作用,但它表达了我想要完成的任务。
SELECT *
FROM TableA
WHERE TableA.RegCode Like (
SELECT '%' + TableB.PartialRegCode + '%'
FROM TableB)
如果有更好的方法,我宁愿不诉诸游标。
答案 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
)