Несколько решений (колонка содержит некоторые NULLs | Колонка это все значения NULL * Test Одиночная колонка | Проверка нескольких столбцов с табличными результатами)
Если вам необходимо проверить несколько столбцов, можно использовать следующее:
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
Wher e результат равен 0, нет NULL.
Второй, давайте считать не-NULLs:
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
... Но поскольку мы рассчитываем не-NULLs здесь, это может быть упрощена:
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 = Существует не менее одного NULL
Надеюсь, это поможет.
Просто, чтобы выбрать нит, базе данных все равно придется читать несколько строк. Он просто сможет остановиться, когда он наконец достигнет того, что соответствует критериям. Он все равно должен читать все, что не соответствует критериям, пока оно не дойдет до этого. Кроме того, использование EXISTS даст то же преимущество, и я считаю, что он совместим с ANSI. –