2010-01-29 2 views
1

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

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 + '%' 

Если вы хотите, чтобы вернуть те строки, которые соответствуют Всем моделям, это должно работа:

Смежные вопросы