Инверсия КОАЛЕССА - PullRequest
       18

Инверсия КОАЛЕССА

9 голосов
/ 21 апреля 2010

есть ли в SQL Server 2005 функция, которая возвращает NULL [или логическое значение], если любой аргументов (любого типа) равен NULL, что спасло бы меня от записи IF a IS NULL OR b IS NULL OR c IS NULL ....

Ответы [ 5 ]

4 голосов
/ 21 апреля 2010

Вот умеренно неприятный способ сделать это:

set ansi_nulls off
if (null in (a, b, c, d, e) print 'got a null'
set ansi_nulls on
1 голос
/ 21 апреля 2010

Нет, ближе всего вы получаете NULLIF (), но это не то, что вы хотите. Я бы просто использовал здесь оператор OR.

0 голосов
/ 01 ноября 2018

Я не уверен в SQL Server, но в аналогичной базе данных (здесь я использовал куст, более близкий к традиционной СУБД по синтаксису) select isnull(concat(*)) from some_table; поможет проверить, равен ли какой-либо из столбцов NULL.

Надеюсь, что есть какой-то способ обойти эту концепцию в SQL Server, и мое предложение поможет эффективно решить проблему.

0 голосов
/ 22 апреля 2010

Как насчет ...

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
0 голосов
/ 21 апреля 2010

Так как NULL распространяются, вы можете сделать:

(cola + colb + colc) is null

при условии, что все совместимые типы данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...