条件性拆分解释

时间:2016-06-25 05:59:08

标签: ssis

尝试了解以下条件分割表达式尝试执行的操作:

ISNULL(Employee_ID_WD)|| (右(REPLACENULL(Employee_ID_WD,“0”),LEN(REPLACENULL(Employee_ID,“0”)))!= REPLACENULL(Employee_ID,“0”))

我是SSIS的新手,有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

当你把它分解时,这是一个相对直接的表达。

简洁地说(tl; dr),如果Employee_ID_WD为空或Employee_ID值不在Employee_ID_WD值中,则返回true。否则,请返回false

详细说明:

第一部分ISNULL(Employee_ID_WD)检查Employee_ID_WD是否为空。如果是,表达式将立即返回true。原因就在于||之后。这被称为逻辑或。如果您在许多编程中看到这一点,则表明程序员希望表达式在||之前的任何部分为真时立即返回。换句话说,如果||之前的某些事情是真的,那就开始做我需要你做的事情,检查这个表达式中的任何内容是没有意义的,我知道我需要知道什么才能继续前进。这被称为短路评估。 Wiki

如果Employee_ID_WD不为null,我们将继续执行表达式的下一部分。

这部分:

(RIGHT(REPLACENULL(Employee_ID_WD,"0"),LEN(REPLACENULL(Employee_ID,"0")))

抓住Employee_ID_WD右侧的字符。它要求的字符数是从LEN上运行的Employee_ID(长度)函数返回的字符数。此外,这两部分都在检查它们传入的值是否为空,如REPLACENULL函数所示。如果它们为null,则返回值为0的字符串。如果其中一个值为null,则执行此操作,这样您就可以获得真正的值比较。在此表达式的所有部分中使用REPLACENULL函数可以使其更加健壮,这意味着可以处理与数据的不一致而不会出现错误,或者最终给出一致的结果。

将上述部分的结果与REPLACENULL(Employee_ID,"0")进行比较。如果上面的部分与此不相等(!=不等于),则表达式返回true。

SSIS Expression Reference