我有一个表(表A)和一个描述字段(varchar(max))。 我有另一个表(表B),其中包含带关键字的字段。
对于表B中的所有行,我想返回表A中包含至少一个表A中指定的关键字的所有行。
我在Google网站上搜索并搜索过但未找到任何示例如何执行此操作。我找到的所有示例都要求您输入搜索字符串,而不是仅动态运行查询。
答案 0 :(得分:0)
您可以使用通配符和这样的连接:
declare @TableA table (description varchar(max))
declare @TableB table (keyword varchar(max))
insert into @TableA values ('The quick brown fox jumped over the lazy dog.'), ('I think, therefore I am.')
insert into @TableB values ('jumped'), ('therefore'), ('fox'), ('th')
select * from @TableB b
inner join @TableA a on a.description like '%' + b.keyword + '%'
结果:
keyword description
jumped The quick brown fox jumped over the lazy dog.
therefore I think, therefore I am.
fox The quick brown fox jumped over the lazy dog.
th The quick brown fox jumped over the lazy dog.
th I think, therefore I am.
答案 1 :(得分:0)
SELECT *
FROM TableB
JOIN TableA ON tableA.description LIKE '%' + TableB.keyword + '%'
我建议你在描述字段上放一个全文索引并使用它的搜索功能,因为LIKE
搜索双方的通配符将无法使用任何正常索引。这也假设TableB中每行有一个关键字。
答案 2 :(得分:0)
尝试这样的事情:
CREATE TABLE TableA
(
Id INT Identity Primary Key,
Description varchar(max)
)
CREATE TABLE TableB
(
Id Int Identity Primary Key,
Keyword Varchar(max)
)
INSERT INTO TableB (Keyword)
VALUES ('My'), ('Ipso'), ('Dipso'), ('Dinosaur')
INSERT INTO TableA(Description)
VALUES ('My very best friend'), ('Ipso Ipso Dipso'), ('My favourite Dinosaur is a T_Rex'),('None of the above')
SELECT *
FROM TableA
INNER JOIN TableB
ON Description LIKE '%' + Keyword + '%'