sql查询忽略所有具有所有空列的行

时间:2010-01-22 00:52:43

标签: c# sql sql-server

我有一个SQL Server查询需要计算返回的行数,但我需要忽略所有列值为NULL的行。某些行对于某些列具有NULL值,但这没关系。我只需要过滤掉那些具有ALL NULL值的那些。

现在我返回所有行并使用SqlDataReader迭代返回的行并计算我需要的行。如果可能的话,我想将其移入查询本身。

谢谢!

编辑:我想做的与此类似,但我显然很难让VS SQL编辑器识别我正在做的事情:

SELECT COUNT(sd.[ID]) 
FROM [Some Data] sd 
WHERE sd.[Data Name] = 'something' AND ((sd.q1 IS NOT NULL) OR (sd.q2 IS NOT NULL)) 

等。

3 个答案:

答案 0 :(得分:4)

select count(id)
from [Some Data]
where not (Column1 is null and Column2 is null and Column3 is null ...)

答案 1 :(得分:1)

这样的事情怎么样:

从MyTable中选择Count(*) 其中Column1为非NULL且Column2为非NULL且Column3为非NULL ...

答案 2 :(得分:1)

您已经选择了答案,但这是最正确的答案,因为SQL引擎可以优化它并“短路”它。

SELECT count(id)
FROM [Some Data]
WHERE NOT (COALESCE(Column1,Column2,Column3...) is null)