我正在使用 Sql Server 2008。在我的表的一个列中具有空值。现在我想使用查询找出表中所有具有空值的列。
那么如何在SQL中找出表中所有具有空值的列呢?
我正在使用 Sql Server 2008。在我的表的一个列中具有空值。现在我想使用查询找出表中所有具有空值的列。
那么如何在SQL中找出表中所有具有空值的列呢?
假设你的桌子是
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
执行计划和一些替代方法在我的问题中。