2010-01-29 2 views
1

다른 테이블에 포함 된 여러 패턴을 기반으로 한 단일 필드, LIKE 비교를위한 like 및 IN 절과 일치시킬 수 있기를 바랍니다. 다음 쿼리는 분명히 작동하지 않지만, 달성하고자하는 것을 표현합니다.여러 패턴에 걸쳐 유사한 비교 사용하기

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

더 나은 방법이 있다면 나는 커서에 의지하지 않을 것입니다. 당신이 패턴과 일치 행을 반환 찾고 있다면

+0

많은 패턴의 행 또는 모든 패턴을 반환 하시겠습니까? – Aaron

답변

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

와우 ... 나는 그 문제를 지나치게 생각 해낸 적이 있느냐 ... 고마워 ... – TGnat

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 
) 
관련 문제