ストアド プロシージャ/クエリを作成するときに、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 + '%'
これは可能ですか、推奨されますか?
このようなことを行うより良い方法はありますか?
文節の両端にワイルドカードを入れているのは、カード テキストで使用される「魔王」、「獣戦士」、「直接ダメージ」、「戦闘ダメージ」という用語があるためです。
パフォーマンスに応じて、指定したクエリを使用するか、全文キーワード検索を使用して同じタスクを実行できるかという印象を受けます。
テキスト検索したいフィールドでサーバーにテキスト インデックスを作成させる以外に、他に何かする必要がありますか?