我已经拥有包含许多文本列的表,并且需要能够使用搜索词来查询表。对于单个术语,这很简单......
SELECT * FROM things WHERE @searchTerm in (column1, column2...columnX)
但是,有时我需要在单个查询中搜索多个术语,例如......
SELECT * FROM things WHERE @searchTerms in (column1, column2...columnX)
...其中@searchTerms
是值的集合,而不是单个值。有没有办法在SQL中模拟这种行为?
更新:
谢谢@Tedo G.,遗憾的是我需要查询在不同的术语之间使用AND
。要做到这一点,我已经为您添加了一项更改,以对结果进行分组,并确保每个不同结果的计数与术语数量相匹配......
SELECT
*
FROM
things AS A INNER JOIN @searchTerms AS B
ON B.[FieldName] IN (column1, column2...columnX)
GROUP BY column1, column2...columnX
HAVING count(column1) = @numberOfSearchTerms
......这有效,但有更好的方法吗?
答案 0 :(得分:2)
实现此目的的另一种方法是创建一个表变量并用搜索项值填充它,然后加入它:
SELECT
*
FROM
things AS A INNER JOIN @searchTerms AS B
ON B.[FieldName] IN (column1, column2...columnX)