多个输入的SQL查询

时间:2016-09-07 12:42:28

标签: sql search predicate

我已经拥有包含许多文本列的表,并且需要能够使用搜索词来查询表。对于单个术语,这很简单......

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

......这有效,但有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

实现此目的的另一种方法是创建一个表变量并用搜索项值填充它,然后加入它:

SELECT 
     * 
FROM 
     things AS A INNER JOIN @searchTerms AS B
          ON B.[FieldName] IN (column1, column2...columnX)