带有多个搜索词的SQL查询

时间:2011-11-08 09:46:38

标签: sql sql-server sql-server-2005 tsql

我使用以下查询来获取所有数据,其中包含inventoryLocalization表的 name 列中的一些单词(由函数拆分)。

在示例中我已经拆分了“红绿蓝”字符串。 应该是,它返回了所有行,如 OR 运算符。

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

我的问题是,是否可以获取包含所有单词的行,如 AND 运算符。

2 个答案:

答案 0 :(得分: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 +'%'))

答案 1 :(得分: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