我使用以下查询来获取所有数据,其中包含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 运算符。
答案 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