我正在尝试找到最有效的方法来获取已拆分并将其与列匹配的数组项。
例如,数组[鼠标,猫,狗]
我需要找到一列,其中列动物有3个项目(鼠标,猫,狗) 我找到了方法,如果找到任何这些项目,但不是全部。 我可以使用递归,但它不理想,因为我也将不得不搜索其他列以及相同的字段。
declare @Search varchar(100)
set @Search = 'mouse dog cat';
DECLARE @tblWords TABLE( ID int,ArrayValue VARCHAR(500))
INSERT INTO @tblWords (ID, ArrayValue) SELECT * FROM [dbo].[Splitstring] (@Search, ' ')
SELECT ID, animal ,COUNT(*) as [Result]
FROM @tblWords
JOIN zoo
on animal like '%' + ArrayValue + '%'
GROUP BY ID, animal
此结果将查找是否找到这3个项目中的任何一个但不是全部。 我做错了什么。
答案 0 :(得分:0)
您需要having
子句来计算匹配数:
SELECT z.ID, z.animal, COUNT(*) as [Result]
FROM @tblWords w JOIN
zoo z
on z.animal like '%' + w.ArrayValue + '%'
GROUP BY z.ID, z.animal
HAVING count(*) = (select count(*) from @tblWords);