使用多个值SQL搜索多个列

时间:2017-03-15 21:59:38

标签: sql-server sql-server-2012

我知道用一个值搜索多个列是可行的。

我想搜索3-4列4个5个值

我想检查我选择的列中是否有任何值。

示例

Column 1 | Column 2 | Column 3 | Column 4 
         |          |          |
Hello    |          |          |            = True
         |          |          |
         | Goodbye  |          |            = True
         |          |  Hello   | Goodbye    = True
         |          |          |
         | Hello    |          |            = True
         |          |          |
         |          |  Goodbye |            = True

在示例中,我希望SQL在某些情况下从所有具有Hello或Goodbye的行中提取数据。

有办法做我想做的事吗?

3 个答案:

答案 0 :(得分:2)

还有一种方法......

SELECT *
FROM TableName
WHERE 'Value1' IN (Col1,Col2,Col3...) OR 'Val2' in (Col1,Col2,Col3...) OR ...

答案 1 :(得分:1)

如果它只有3或4列,最简单的解决方案就是这样:

SELECT *
FROM TableName
WHERE Column1 IN('Hello', 'Goodbye')
OR Column2 IN('Hello', 'Goodbye')
OR Column3 IN('Hello', 'Goodbye')
OR Column4 IN('Hello', 'Goodbye')

答案 2 :(得分:1)

忘记遵循我的解决方案:我需要联接2个表并在各列中进行搜索。他们加注并把t1的ID设为varchar,smh,其中一些具有 null ,因此我们需要检查它们,以免我们的结果被加注(这是为什么选择的答案对我不起作用)。您不需要别名,但是如果您要更深入一点,则可以使事情变得简单。

使用“ +”运算符将列添加到WHERE中,检查是否为空,如果需要也可以进行种姓。

SELECT * FROM Table1 AS t1 LEFT OUTER JOIN Table2 AS t2 ON t1.id = t2.id WHERE( ISNULL(CONVERT(VARCHAR,t1.id),'') + ISNULL(t1.name,'') + ISNULL(t1.desc,'') + ISNULL(t2.company,'')) LIKE '%xbox%'

相关问题