2011-11-08 9 views
2

私は、次のクエリを使用して、inventoryLocalizationテーブルのという名前のカラムにいくつかの単語(関数で分割されています)を含むすべてのデータを取得します。複数の検索ワードを持つsqlクエリ

この例では、「赤緑青」の文字列が分割されています。 のように、またはのようなすべての行が返されました。

SELECT distinct 
inL.name 
FROM dbo.[inventoryLocalization] inL 
JOIN fnSplitString (N'red green blue',' ') words ON (inL.name LIKE '%'+ words.item +'%') 

私の質問は、あるそれはAND演算子のように、すべての単語を持っている行を取得することが可能です。

答えて

3
select inL.name from dbo.[inventoryLocalization] inL 
where not exists 
    (select 1 from fnSplitString(N'red green blue',' ') words 
    where (inL.name NOT LIKE '%'+ words.item +'%')) 
0

このような何か試してみてください:

DECLARE @SomeWords NVARCHAR(200), @Num INT 

SET @SomeWords = 'red green blue' 

SELECT @Num = COUNT(*) 
FROM fnSplitString (@SomeWords,' ') 

SELECT inL.name 
FROM dbo.[inventoryLocalization] inL 
JOIN fnSplitString (@SomeWords,' ')words 
ON (inL.name LIKE '%'+ words.item +'%') 
GROUP BY inL.name 
HAVING COUNT(*) = @Num 
関連する問題