3

何を使おうか迷っています。

基本的に、複数のフレーズの出現を単一の列で検索できる検索文字列が必要です。各入力フレーズはスペースで区切られています。

したがって、ユーザーからの入力は次のようになります。

"Phrase1 Phrase2 ... PhraseX"     (number of phrases can 0 to unknown!, but say < 6)

ロジックで検索する必要があります:

Where 'Phrase1%' **AND** 'Phrase2%' **AND** ... 'PhraseX%'

...など...すべてのフレーズを見つける必要があります。

常に論理積

SO の速度、パフォーマンスを考慮して、次を使用しますか?

沢山の

Like 'Phrase1%' and like 'Phrase2%' and like ... 'PhraseX%' ?

または使用

patindex('Phrase1%' , column) > 0 AND  patindex('Phrase2%' , column) > 0 
AND ...     patindex('PhraseX%' , column) 

または使用

全文検索インデックスを追加し、

使用:

Where Contatins(Column, 'Phrase1*') AND Contatins(Column, 'Phrase2*') AND ... Contatins(Column, 'PhraseX*')

または

????

オプションが多すぎるので、これを行う最も効率的な方法は何ですか...

あなたの知恵は高く評価されます...

4

3 に答える 3

2

個人的に私はこの解決策が好きです -

DECLARE @temp TABLE (title NVARCHAR(50))
INSERT INTO @temp (title)
VALUES ('Phrase1 33'), ('test Phrase2'), ('blank')

SELECT t.*
FROM @temp t
WHERE EXISTS(
    SELECT 1
    FROM (
        VALUES ('Phrase1'), ('Phrase2'), ('PhraseX')
    ) c(t)  
    WHERE title LIKE '%' + t + '%'
)
于 2013-08-05T05:26:10.227 に答える