我需要检测两个值中的任何一个是否为空,如果不是,它们是否不同。

我的 split 条件是

(ISNULL(ModuleLevelId) && !ISNULL(LEV_CODE)) ||
(!ISNULL(ModuleLevelId) && ISNULL(LEV_CODE)) || (ISNULL(LEV_CODE) ? 0 - ModuleLevelId : (DT_I4)LEV_CODE) != ModuleLevelId

但我被告知我的表达式会导致 null,即非 bool 条件。

任何人都可以帮我写下有效的条件吗?

非常感谢

帕特里克

最佳答案

(ISNULL(ModuleLevelId) && !ISNULL(LEV_CODE)) ||
(!ISNULL(ModuleLevelId) && ISNULL(LEV_CODE)) ||
((ISNULL(LEV_CODE) ? 0 - ModuleLevelId :(DT_I4)LEV_CODE) != ModuleLevelId)

我认为你需要围绕你的第三个学期:
 (ISNULL(LEV_CODE) ? 0 - ModuleLevelId :(DT_I4)LEV_CODE) != ModuleLevelId

和 ()。我认为表达式引擎将它错误地解析为
((ISNULL(ModuleLevelId) && !ISNULL(LEV_CODE)) ||
(!ISNULL(ModuleLevelId) && ISNULL(LEV_CODE)) ||
(ISNULL(LEV_CODE) ? 0 - ModuleLevelId :(DT_I4)LEV_CODE)) != ModuleLevelId

或 ( bool 值 || bool 值 || INT) != INT

当你想要的是
( bool 值 || bool 值 || bool 值)

试试这个答案中最上面的代码。

关于SSIS 条件拆分 NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12498657/

10-12 12:44