我根据以下规则将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加入结果
答案 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)