这是什么意思? LEN(TRIM(重量))== 0? (DT_STR,50,1252)NULL(DT_STR,50,1252):( DT_STR,50,1252)重量

时间:2013-04-07 02:25:12

标签: ssis

这是派生列“ReplaceWeight”

的表达式
LEN(TRIM(Weight)) == 0 ? (DT_STR,50,1252)NULL(DT_STR,50,1252) : (DT_STR,50,1252)Weight

我不清楚这个IF语句的True部分的语法......

我将其读作“如果修剪列'Weight'的长度为零,则为派生列ReplaceWeight 指定类型为string的NULL值 ELSE将Weight列转换为字符串并将此值分配给派生列“

表达式构建器向我显示

NULL(DT_STR,50,1252) 

...返回指定数据类型DT_STR的NULL值。这对我来说有点奇怪,因为我习惯于将NULL作为各种类型的数据库列的值。

我是否要解释以下意思是“将STRING数据类型的空值转换为STRING数据类型?”

(DT_STR,50,1252)NULL(DT_STR,50,1252)

我认为这是有效的:

   LEN(TRIM(Weight)) == 0 ? NULL : (DT_STR,50,1252)Weight

我是否正在解释这段代码?

1 个答案:

答案 0 :(得分:4)

您发布的第一个表达式是正确的。

表达式根据表达式中“看到”的值定义派生列的数据类型。您没有像定义表时那样手动定义派生列的数据类型。因此,所有可能的返回值都必须正确定义数据类型。

这是一个功能:     NULL(DT_STR,50,1252)

该函数返回NULL并定义了字段类型。 您会认为这对SSIS来说已经足够了,但您还必须对返回的值进行类型转换,从而导致有些多余:     (DT_STR,50,1252)NULL(DT_STR,50,1252)

如果有人可以解释为什么 SSIS要求对已经定义了数据类型的类型进行类型转换,我有兴趣听听解释。

干杯, 彼得