Использование сравнения Like по нескольким шаблонам - PullRequest
1 голос
/ 29 января 2010

Я хотел бы иметь возможность сопоставлять одно поле на основе нескольких шаблонов, содержащихся в другой таблице, типа like и предложения IN для сравнений LIKE. Следующий запрос, очевидно, не работает, но он выражает то, что я пытаюсь выполнить.

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

Я бы не стал прибегать к курсорам, если есть лучший способ.

Ответы [ 2 ]

4 голосов
/ 29 января 2010
SELECT * 
FROM TableA a
INNER JOIN TableB b on a.RegCode like '%' + b.PartialRegCode + '%'
1 голос
/ 29 января 2010

Если вы хотите вернуть строки, соответствующие ЛЮБОМУ шаблону, это должно сработать:

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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...