構建存儲過程/查詢時,我可以/應該使用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