0

我正在使用 Sql Server 2008。在我的表的一个列中具有空值。现在我想使用查询找出表中所有具有空值的列。

那么如何在SQL中找出表中所有具有空值的列呢?

4

1 回答 1

0

假设你的桌子是

CREATE TABLE T
(
A INT PRIMARY KEY,
B CHAR(1000) NULL,
C CHAR(1000) NULL
)

一种方法是

SELECT 
    MAX(CASE WHEN B IS NULL THEN 1 ELSE 0 END) AS B,
    MAX(CASE WHEN C IS NULL THEN 1 ELSE 0 END) AS C
FROM T

这很简单,但最终可能会不必要地扫描整个表。即使扫描的第一行包含NULL两列。

一个可能避免这种情况的查询是

SELECT DISTINCT TOP 2 NullExists
FROM test T 
CROSS APPLY (VALUES(CASE WHEN b IS NULL THEN 'b' END),
                   (CASE WHEN c IS NULL THEN 'c' END)) V(NullExists)
WHERE NullExists IS NOT NULL

执行计划和一些替代方法在我的问题中。

于 2013-02-27T08:11:03.963 回答