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

InT*_*ons 20 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. 
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)