есть ли функция в SQL Server 2005, которая возвращает NULL [или логическое значение], если любой аргументов (любого типа) является NULL, что избавит меня от записи IF a IS NULL OR b IS NULL OR c IS NULL ...
.
Обратный COALESCE
Ответ 1
Вот умеренно неприятный способ сделать это:
set ansi_nulls off
if (null in (a, b, c, d, e) print 'got a null'
set ansi_nulls on
Ответ 2
Так как NULLs propogate вы можете сделать:
(cola + colb + colc) is null
при условии, что все совместимые типы данных
Ответ 3
Нет, ближе всего вы получаете NULLIF(), но это не то, что вы хотите. Я просто придерживаюсь использования инструкции OR здесь.
Ответ 4
Как насчет...
SELECT
CASE WHEN NULLIF(ISNULL(@testA, 1), @testA)
+ NULLIF(ISNULL(@testB, 1), @testB)
+ NULLIF(ISNULL(@testC, 1), @testC) > 0
THEN 'Got NULL'
ELSE 'NO NULL'
END
Ответ 5
Я не уверен в SQL Server, но в аналогичной базе данных (здесь я использовал куст, более близкий к традиционной СУБД по синтаксису) select isnull(concat(*)) from some_table;
поможет проверить, является ли какой-либо из столбцов NULL
.
Надеюсь, что есть какой-то способ обойти эту концепцию в SQL Server, и мое предложение помогает эффективно решить проблему.