找出SQL中表中具有Null值的所有列

时间:2013-02-27 07:59:57

标签: sql-server-2008 null

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

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

1 个答案:

答案 0 :(得分: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

执行计划和一些替代方法在my question here