SqlServer2008を使用しています。テーブルの列の1つにnull値があります。ここで、クエリを使用して、テーブル内のnull値を持つすべての列を見つけたいと思います。
では、SQLのテーブルでnull値を持つすべての列を見つけるにはどうすればよいでしょうか。
SqlServer2008を使用しています。テーブルの列の1つにnull値があります。ここで、クエリを使用して、テーブル内のnull値を持つすべての列を見つけたいと思います。
では、SQLのテーブルでnull値を持つすべての列を見つけるにはどうすればよいでしょうか。
あなたのテーブルが
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
実行計画といくつかの代替アプローチは、ここで私の質問にあります。