23

我根据以下规则将 FULL Outer join 的结果传递给 Conditional Split 和 Filtering Records 。基本上这两个表具有相同的架构并且主键值相同。

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 的异常。我怎样才能使这项工作?

Conditional Split 从 Merge Join 获取输入,这是一个 FULL OUTER JOIN,因为我需要 FULL OUTER join 结果

4

2 回答 2

31

在比较您的值之前,您的第三个条件应该再次以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)

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

于 2013-05-21T16:17:24.857 回答
5

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

REPLACENULL(Source.Id,0) == REPLACENULL(Destination.Id,0)
于 2017-05-17T09:20:58.520 回答