试图了解以下条件拆分表达式试图做:条件性拆分解释
ISNULL(Employee_ID_WD)|| (RIGHT(REPLACENULL(Employee_ID_WD,“0”),LEN(REPLACENULL(Employee_ID,“0”)))!= REPLACENULL(Employee_ID,“0”))
我是SSIS的新手,任何人都可以解释这一点吗?
试图了解以下条件拆分表达式试图做:条件性拆分解释
ISNULL(Employee_ID_WD)|| (RIGHT(REPLACENULL(Employee_ID_WD,“0”),LEN(REPLACENULL(Employee_ID,“0”)))!= REPLACENULL(Employee_ID,“0”))
我是SSIS的新手,任何人都可以解释这一点吗?
这是一个相对直接的表达,当你分解它。
说得简洁(TL; DR),如果Employee_ID_WD
为空或Employee_ID
值不在Employee_ID_WD
值,然后返回true
。否则,返回false
。
详情:
第一部分,ISNULL(Employee_ID_WD)
,检查,看看Employee_ID_WD
为null。如果是,表达式将立即返回true。之后的原因是||
。这被称为逻辑或。如果你在许多编程中看到这一点,它表明程序员想要表达式立即返回,如果它的任何部分在||
之前为真。换句话说,如果||
之前的某些事情是真的,那就开始做我需要你做的事,检查这个表达式中的任何内容都没有意义,我知道我需要知道什么才能继续前进。这被称为短路评估。 Wiki。如果Employee_ID_WD
不为空,我们转到表达式的下一部分。
这部分:
(RIGHT(REPLACENULL(Employee_ID_WD,"0"),LEN(REPLACENULL(Employee_ID,"0")))
被抓取在Employee_ID_WD
右侧的字符。它要求的字符数是从Employee_ID
上运行的LEN
(长度)函数返回的结果。另外,这两个部分都检查它们传入的值是否为空,如REPLACENULL
函数所示。如果它们为null,则返回值为0的字符串。这是为了防止其中一个值为空,这样您可以获得真正的值比较。在这个表达式的所有部分使用REPLACENULL
函数使得它更加健壮,这意味着与数据的不一致将被处理,而不会发生错误,或者最终得到一致的结果。
将上述部分的结果与REPLACENULL(Employee_ID,"0")
进行比较。如果上面的部分与此不相等(!=
不等于),则表达式返回true。
谢谢你的详细答案。这个答案提供了我所寻求的清晰度。 – Sharktooth