我知道用一个值搜索多个列是可行的。
我想搜索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的行中提取数据。
有办法做我想做的事吗?
答案 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%'