Редактировать
(оригинальный ответ ниже)
Ваш комментарий (и последующее редактирование) полностью меняет вопрос.
Для этого вы можете использовать LIKE
как часть предложения ON
в объединении:
CREATE TABLE a (foo varchar(254))
GO
CREATE TABLE b (id int, bar varchar(254))
GO
INSERT INTO a (foo) VALUES ('one')
INSERT INTO a (foo) VALUES ('tone')
INSERT INTO a (foo) VALUES ('phone')
INSERT INTO a (foo) VALUES ('two')
INSERT INTO a (foo) VALUES ('three')
INSERT INTO b (id, bar) VALUES (2, 'ne')
INSERT INTO b (id, bar) VALUES (3, 't')
SELECT a.foo
FROM a
INNER JOIN b ON a.foo LIKE '%' + b.bar
WHERE b.id = 2
(Это версия SQL Server; для MySQL добавьте различные точки с запятой, удалите GO
s и используйте вместо него ...LIKE concat('%', b.bar)
.)
Использует id
= 2 для поиска bar
= "ne" в таблице b
, затем добавляет оператор %
и использует его для фильтрации результатов из a
. Результаты:
one
tone
phone
Вам не придется делать конкат, если вы можете сохранить оператора в b.bar
.
Отдельно я с удивлением обнаружил, что это также работает (на SQL Server):
SELECT foo
FROM a
WHERE foo LIKE (
SELECT TOP 1 '%' + bar
FROM b
WHERE id = 2
)
... но версия, использующая JOIN
, вероятно, более гибкая.
Это должно помочь вам.
Оригинальный ответ
(возможно, больше не актуально)
Трудно сказать, о чем вы спрашиваете, но вот пример использования LIKE
для ограничения результатов от JOIN
:
SELECT a.foo, b.bar
FROM someTable a
INNER JOIN someOtherTable b
ON a.someField = b.someField
WHERE a.foo LIKE 'SOMETHING%'
AND b.bar LIKE '%SOMETHING ELSE'
Это даст вам foo
из someTable
и bar
из someOtherTable
, где строки связаны с someField
, а foo
начинается с "ЧТО-ТО", а bar
заканчивается с "ЧТО-ТО ЕЩЕ" .