Условное разделение не выполняется, если значение равно NULL в SSIS - программирование
Подтвердить что ты не робот

Условное разделение не выполняется, если значение равно NULL в SSIS

Я передаю результат FULL Outer join на Условный разделитель и Фильтрацию записей на основе следующих правил. В принципе обе таблицы имеют одну и ту же схему, а значения Primarykey одинаковы.

a. If Primary key of Source is NULL
b. If Primary Key of Destination is NULL
c. If Source and Destination key matches. 

Он отлично работает для (a) и (b), но не работает для (c)

Source.Id == Destination.Id

и выдает исключение, условие которого оценивается как NULL, где ожидалось булево значение. Как я могу сделать эту работу?

Условное разделение получает входные данные от Merge Join и это FULL OUTER JOIN, так как мне нужны результаты FULL OUTER join здесь

4b9b3361

Ответ 1

Ваше третье условие должно начинаться с проверки ISNULL, прежде чем сравнивать ваши значения. Как показано ниже:

!ISNULL(Source.Id) && !ISNULL(Destination.Id) && Source.Id == Destination.Id

Вам нужно обрабатывать каждый столбец, который может быть NULL в вашем состоянии. Поскольку вы сравниваете идентификаторы, другой вариант:

(ISNULL(Source.Id) ? 0 : Source.Id) == (ISNULL(Destination.Id) ? 0 : Destination.Id)

При сравнении строк вы можете заменить нули пробелами.

Ответ 2

В качестве альтернативы вы можете использовать следующий синтаксис:

REPLACENULL(Source.Id,0) == REPLACENULL(Destination.Id,0)

Ответ 3

Не нарушится ли это при сравнении нуля с 0?