Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 为什么第二个条件不能正确执行?_Ssis - Fatal编程技术网

Ssis 为什么第二个条件不能正确执行?

Ssis 为什么第二个条件不能正确执行?,ssis,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”。到目前为止,这是正确的。但是,如果“outGen

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

((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将为空。这是错误的


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

因此此转换工作正常,无需将值强制转换为整数:

((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)
如果outsex已经是DT_STR类型,你可以简化它并使用它

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

outGender将进入派生列转换的列类型是什么?我甚至无法构建一个在运行转换时不会抛出强制转换错误的包。此外,纯粹根据您提出的内容,它是无效的,因为括号没有闭合。这可能是您的根本问题。@Kyle-括号中的do close。这是一个糟糕的复制/粘贴。。。