SQL 查询多个输入
SQL query over multiple inputs
我有 table 包含许多文本列,并且需要能够使用搜索词来查询 table。对于单个术语,这很简单...
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
...这可行,但有更好的方法吗?
实现此目的的另一种方法是制作一个 table 变量并用您的搜索词值填充它,然后加入它:
SELECT
*
FROM
things AS A INNER JOIN @searchTerms AS B
ON B.[FieldName] IN (column1, column2...columnX)
我有 table 包含许多文本列,并且需要能够使用搜索词来查询 table。对于单个术语,这很简单...
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
...这可行,但有更好的方法吗?
实现此目的的另一种方法是制作一个 table 变量并用您的搜索词值填充它,然后加入它:
SELECT
*
FROM
things AS A INNER JOIN @searchTerms AS B
ON B.[FieldName] IN (column1, column2...columnX)