如果SSIS中的值为NULL,则条件性拆分失败

时间:2013-05-21 15:58:34

标签: 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加入结果

2 个答案:

答案 0 :(得分:27)

在比较您的值之前,您的第三个条件应该从 ISNULL 检查开始。如下所示:

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

您需要处理条件中可能 NULL 的每一列。 由于您正在比较Id,因此另一个选项是:

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

如果要比较字符串,可以用空格替换零。

答案 1 :(得分:2)

或者,您可以使用以下语法:

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