计算 SQL Server 列中 NULL 的数量

cdu*_*dub 0 sql t-sql sql-server

我有两个这样的查询:

SELECT MyId, MyColumn FROM MyTable WHERE MyColumn IS NULL;
SELECT count(MyColumn) as MyCount FROM MyTable WHERE MyColumn IS NULL;
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

MyId    MyColumn
10      NULL
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*sen 7

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

SELECT COUNT(*) AS MyCount
FROM MyTable
WHERE MyColumn IS NULL;
Run Code Online (Sandbox Code Playgroud)

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

SELECT COUNT(CASE WHEN MyColumn IS NULL THEN 1 END) AS MyCount
FROM MyTable;
Run Code Online (Sandbox Code Playgroud)