【问题标题】:Counting the number of NULLs in a SQL Server Column计算 SQL Server 列中的 NULL 数
【发布时间】:2022-08-23 14:55:12
【问题描述】:

我有两个这样的查询:

SELECT MyId, MyColumn FROM MyTable WHERE MyColumn IS NULL;
SELECT count(MyColumn) as MyCount FROM MyTable WHERE MyColumn IS NULL;

我得到的结果是:

MyId    MyColumn
10      NULL

MyCount
0

为什么第二个查询中的计数总是 0?

    标签: sql sql-server tsql


    【解决方案1】:

    COUNT() 函数忽略 NULL 值,因此第二个查询中的计数将始终为零。要么算点别的:

    SELECT COUNT(*) AS MyCount
    FROM MyTable
    WHERE MyColumn IS NULL;
    

    或者使用 CASE 表达式计算整个表以显式计算 NULL 值:

    SELECT COUNT(CASE WHEN MyColumn IS NULL THEN 1 END) AS MyCount
    FROM MyTable;
    

    【讨论】:

      【解决方案2】:

      计数不计为空。 你需要做这样的事情,将 null 转换为 1 然后将它们相加:

      SELECT SUM(CASE WHEN MyColumn IS NULL THEN 1 ELSE 0 END) AS count_nulls
      FROM MyTable;
      

      【讨论】:

        【解决方案3】:

        count 计算值。如果您专门使用count(myColumn) 计算列,则不计算 NULL 值。要计算所有行,请使用以下各项:count(*)count(1)sum(case when myColumn is null then 1 end)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-09
          • 2011-05-04
          • 1970-01-01
          • 1970-01-01
          • 2017-03-23
          • 2021-09-15
          • 1970-01-01
          相关资源
          最近更新 更多