我根据以下规则将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.
Run Code Online (Sandbox Code Playgroud)
(a)和(b)适用但(c)不适用
Source.Id == Destination.Id
Run Code Online (Sandbox Code Playgroud)
并抛出异常,条件评估为NULL,其中布尔值是预期的.我怎么能做这个工作?
条件性拆分从Merge Join获取输入,它是一个FULL OUTER JOIN因为我需要FULL OUTER加入结果这里
Mil*_*kov 28
在比较您的值之前,您的第三个条件应该再次启动ISNULL检查.如下:
!ISNULL(Source.Id) && !ISNULL(Destination.Id) && Source.Id == Destination.Id
Run Code Online (Sandbox Code Playgroud)
您需要处理条件中可能为NULL的每个列.由于您正在比较Id,另一种选择是:
(ISNULL(Source.Id) ? 0 : Source.Id) == (ISNULL(Destination.Id) ? 0 : Destination.Id)
Run Code Online (Sandbox Code Playgroud)
如果比较字符串,则可以用空格替换零.
小智 6
或者,您可以使用以下语法:
REPLACENULL(Source.Id,0) == REPLACENULL(Destination.Id,0)
Run Code Online (Sandbox Code Playgroud)