0

SqlServer2008を使用しています。テーブルの列の1つにnull値があります。ここで、クエリを使用して、テーブル内のnull値を持つすべての列を見つけたいと思います。

では、SQLのテーブルでnull値を持つすべての列を見つけるにはどうすればよいでしょうか。

4

1 に答える 1

0

あなたのテーブルが

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

1つの方法は

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 に答える