Tsql 在多个模式上使用Like比较
我希望能够基于另一个表中包含的多个模式匹配单个字段,类似于用于类似比较的like和in子句。下面的查询显然不起作用,但它表达了我试图实现的目标Tsql 在多个模式上使用Like比较,tsql,sql-server-2008,Tsql,Sql Server 2008,我希望能够基于另一个表中包含的多个模式匹配单个字段,类似于用于类似比较的like和in子句。下面的查询显然不起作用,但它表达了我试图实现的目标 SELECT * FROM TableA WHERE TableA.RegCode Like ( SELECT '%' + TableB.PartialRegCode + '%' FROM TableB) 如果有更好的方法,我宁愿不使用游标。如果您希望返回与任何模式匹配的行,这应该可以: SELECT * FROM TableA
SELECT *
FROM TableA
WHERE TableA.RegCode Like (
SELECT '%' + TableB.PartialRegCode + '%'
FROM TableB)
如果有更好的方法,我宁愿不使用游标。如果您希望返回与任何模式匹配的行,这应该可以:
SELECT *
FROM TableA a
INNER JOIN TableB b on a.RegCode like '%' + b.PartialRegCode + '%'
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
)
如果您希望返回与所有模式匹配的行,这应该可以:
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
)
如果您希望返回与任何模式匹配的行,这应该可以:
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
)
如果您希望返回与所有模式匹配的行,这应该可以:
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
)
是否要返回任意多个模式或所有模式的行?是否要返回任意多个模式或所有模式的行?