代码之家  ›  专栏  ›  技术社区  ›  Casey

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

  •  2
  • Casey  · 技术社区  · 14 年前

    我有一个SQL Server查询需要计算返回的行数,但是我需要忽略所有列值都为空的行。有些行的某些列的值为空,但这是可以的。我只需要过滤掉所有空值的。

    现在,我将返回所有行,并使用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 回复  |  直到 14 年前
        1
  •  4
  •   Blorgbeard    14 年前
    select count(id)
    from [Some Data]
    where not (Column1 is null and Column2 is null and Column3 is null ...)
    
        2
  •  1
  •   Randy Minder    14 年前

    像这样的怎么样:

    从MyTable中选择Count(*) 其中column1不为空,column2不为空,column3不为空…

        3
  •  1
  •   Hogan    14 年前

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

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