编辑
(原来的答案在下面)
您的评论(以及随后的编辑)完全改变了问题。
为此,您可以使用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,添加各种分号,去掉GOs,改用...LIKE concat('%', b.bar)。)
使用id = 2 在表b 中查找bar = "ne",然后添加% 运算符并使用它过滤来自a 的结果。结果是:
one
tone
phone
如果您可以将运算符存储在b.bar 中,则无需执行 concat。
另外,我惊讶地发现这也适用(在 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'
这将为您提供来自someTable 的foo 和来自someOtherTable 的bar,其中行由someField 和foo 以“SOMETHING”开头,bar以“SOMETHING ELSE”结尾.