为什么第二个条件无法正确执行?

时间:2013-06-26 19:58:02

标签: ssis

我在派生列转换中有以下表达式。

((DT_STR,1,1252)outGender == "M" || (DT_I1)outGender == 1) ? 1 : (((DT_STR,1,1252)outGender == "F" || (DT_I1)outGender == 2) ? 2 : 3

当我运行包时,如果“outGender”列包含“1”或“M”,则GenderId列变为1.如果“outGender”为“2”,则GenderId列为“2”。到目前为止,这是正确的。但是,如果“outGender”包含“F”,那么GenderId将为NULL。这是错误的。

为什么会发生这种情况,我该如何解决?如果我切换条件字符串,将“F”条件放在表达式的第一部分中,将“M”条件放在第二部分中,那么当“outGender”列包含“M”值时,行的GenderId列中会出现NULL

1 个答案:

答案 0 :(得分:0)

所以这个转换工作正常,而不会将值转换为整数:

((DT_STR,1,1252)outgender == "M" || (DT_STR,1,1252)outgender == "1") ? 1 : (((DT_STR,1,1252)outgender == "F" || (DT_STR,1,1252)outgender == "2") ? 2 : 3)

如果outGender已经是DT_STR类型,你可以简化它并只使用

(outgender == "M" || outgender == "1") ? 1 : ((outgender == "F" || outgender == "2") ? 2 : 3)