Несколько решений (столбец содержит несколько значений NULL | Столбец - все значения NULL * Проверка одного столбца | Проверка нескольких столбцов с табличными результатами)
Если вам нужно протестировать несколько столбцов, вы можете использовать следующее:
Column_1 Column_2 Column_3
-------- -------- --------
1 2 NULL
1 NULL NULL
5 6 NULL
Сначала , проверьте NULL и посчитайте их:
select
sum(case when Column_1 is null then 1 else 0 end) as Column_1,
sum(case when Column_2 is null then 1 else 0 end) as Column_2,
sum(case when Column_3 is null then 1 else 0 end) as Column_3,
from TestTable
Возвращает число NULL:
Column_1 Column_2 Column_3
0 1 3
Если результат равен 0, значения NULL отсутствуют.
Второй , давайте посчитаем ненулевые значения:
select
sum(case when Column_1 is null then 0 else 1 end) as Column_1,
sum(case when Column_2 is null then 0 else 1 end) as Column_2,
sum(case when Column_3 is null then 0 else 1 end) as Column_3,
from TestTable
... Но поскольку мы здесь считаем ненулевые значения, это можно упростить до:
select
count(Column_1) as Column_1,
count(Column_2) as Column_2,
count(Column_3) as Column_3,
from TestTable
Любой из них дает:
Column_1 Column_2 Column_3
3 2 0
Если результат равен 0, столбец целиком состоит из NULL.
Наконец , если вам нужно только проверить определенный столбец, то TOP 1 быстрее, потому что он должен остановиться при первом попадании. Затем вы можете при желании использовать count (*) для получения результата в логическом стиле:
select count(*) from (select top 1 'There is at least one NULL' AS note from TestTable where Column_3 is NULL) a
0 = Нет NULL, 1 = Есть хотя бы один NULL
select count(*) from (select top 1 'There is at least one non-NULL' AS note from TestTable where Column_3 is not NULL) a
0 = Все они равны NULL, 1 = Существует хотя бы один ненулевой
Надеюсь, это поможет.