Обработка NULL условного разделения служб SSIS
Я пытаюсь обновить записи из условного разбиения служб SSIS в места назначения после их сравнения, но я застрял на значениях NULL. У меня есть исходная таблица со 128 столбцами, которую нужно сравнить с местом назначения, чтобы найти записи для обновления, к сожалению, я не могу сравнить значения NULL вместе, или результат условия будет ложным, поскольку он не может сравнивать значения NULL. Есть ли способ легко сравнить исходные и целевые записи, обрабатывающие значения NULL, в виде строки или каким-либо другим способом избежать сбоя? Спасибо
1 ответ
Попробуй использовать ISNULL(column,'NULL')
сравнивать со строкой NULL не актуально NULL
,
Если оба источника и назначения имеют NULL
нужно добавить ISNULL
с обеих сторон, например, ISNULL(Source_col,'NULL') = ISNULL(Target_col,'NULL')
Кроме того, если вам не нужно сравнивать эти NULL
вы можете отфильтровать те NULL
во-первых, и это даст вам лучшую производительность во время выполнения.
Например, вы можете условно разделить источник where col is not null
и установите пункт назначения select * From table where col1 is not null and col2 is not null
, так далее.
ОБНОВИТЬ
В вашем случае это будет:
(ISNULL(SRC_ACT_PLN,'NULL') == ISNULL(DST_ACT_PLN,'NULL'))
(то же самое для других), но имейте в виду, что если источник и пункт назначения NULL
, он все равно будет возвращен как TRUE
иначе сделайте то, что я предлагаю выше, обработайте (отфильтруйте) NULL
Сначала сделайте сравнение.