テキスト文字列を渡すことができ、キーワードのテーブルからテキスト内の特定のキーワード(タグ)を識別するSQLプロシージャが必要です。
これまでのところ、1つの単語に対して非常にうまく機能する次のものがあります。
INSERT INTO #tags SELECT Word
FROM dbo.SplitWords('some colours are blue, green, red and light blue')
SELECT Word
FROM #tags
INTERSECT
SELECT Tag
FROM dbo.Tags
DROP TABLE #tags
タグテーブルに「緑」、「赤」、「青」のエントリがある場合、期待どおりに返されます。
私が知りたいのは、同様の結果をどのように達成できるかということですが、複数の単語であるタグの場合...たとえば、「水色」
上記のコードで私が抱えている問題は、ソーステキストを個々の単語に分割しているため、「水色」が一致しないことですが、カーソルなどを呼び出さない別のルートがありますか?
ご協力いただきありがとうございます
次のことが私が必要とするものを達成するだろうとちょうど気づきました
DECLARE @Text as nvarchar(max)
SELECT @Text = 'some colours are blue, green, red and light blue'
SELECT TagID,
Tag
FROM Tags
WHERE @Text LIKE '% ' + Tag + ' %'
ORDER BY Tag
しかし、テーブルに数千行あり、検索するテキスト文字列が非常に長い場合、非効率になる可能性があるのではないかと心配しています。
同じプロセスをより効率的に行う方法について誰かが考えていますか?