构建存储过程/查询时,我可以/应该使用LIKE标准作为INNER JOIN的一部分吗?我不确定我在问正确的事情,所以让我解释一下。在INNER JOIN中使用LIKE子句
我正在创建一个程序,该程序将在包含文本的列中搜索要搜索的关键字列表。如果我坐在控制台前,我会执行它是这样:
SELECT Id, Name, Description
FROM dbo.Card
WHERE Description LIKE '%warrior%'
OR
Description LIKE '%fiend%'
OR
Description LIKE '%damage%'
但一招我拿起一小会儿去做“强类型”列表分析中的存储过程是解析列表到表变量/临时表中,将其转换为适当的类型,然后在最终结果集中对该表执行INNER JOIN。当向程序发送一个整数ID列表时,这很好用。我结束了最后的查询,看起来像这样:
SELECT Id, Name, Description
FROM dbo.Card
INNER JOIN @tblExclusiveCard ON dbo.Card.Id = @tblExclusiveCard.CardId
我想用这个技巧与字符串列表。但是因为我正在寻找一个特定的关键字,我将使用LIKE子句。所以理想情况下,我想我会让我的最终查询看起来像这样:
SELECT Id, Name, Description
FROM dbo.Card
INNER JOIN @tblKeyword ON dbo.Card.Description LIKE '%' + @tblKeyword.Value + '%'
这是可能的/推荐?
有没有更好的方法来做这样的事情?
之所以我把通配符在条文的两端是因为有“archfiend”,“兽战士”,“直接损害”,并且在使用“战斗伤害”条款卡片文本。
我得到的印象是,根据性能,我可以使用我指定的查询或使用全文关键字搜索来完成相同的任务?
除了让服务器对字段进行文本索引我想要进行文本搜索之外,还有什么我需要做的吗?
我想这应该是'CONCAT( '%',a.type, '%')`HTTP: //stackoverflow.com/a/23276513/443900 – Lee 2016-12-07 21:07:51