我正在查看带有Derived Column
数据流组件的SSIS包
当我打开它时,我看到了一个转变:
Derived COLUMN Name : CLIENT_ID
Derived COLUMN: "REPLACE 'CLIENT_ID'"
EXPRESSION: TRIM(CLIENT_ID) == "" ? (DT_STR,9,1252)NULL(DT_STR,9,1252) : CLIENT_ID
DATA TYPE: string [DT-STR]
LENGTH: 9
PRECISION:
SCALE:
CODE PAGE: 1252 (ANSI- LATIN I)
我试图了解SSIS表达式,我不确定我是否理解语法。
TRIM(CLIENT_ID) == "" ? (DT_STR,9,1252)NULL(DT_STR,9,1252) : CLIENT_ID
我相信代码是从平面文件中读取CLIENT_ID字段,并且该字段是以字符串形式出现的。转换似乎检查以查看读取的值是否为空白,如果是,则转换为NULL字符串值,否则使用原始的CLIENT_ID
字符串值。
转换的语法让我困惑,也许是因为我试图将它与C#代码联系起来。我期望EXPRESSION有以下内容:
TRIM(CLIENT_ID) == "" ? NULL : CLIENT_ID
或者
TRIM(CLIENT_ID) == "" ? (DT_STR,9,1252)NULL : CLIENT_ID
为什么NULL被两个转换包围:(DT_STR,9,1252)
?
答案 0 :(得分:1)
SSIS有一个separate null for each datatype。例如,NULL(DT_STR,9,1252)
表示特定于该代码页上的九个字符串的空值。
与在C#中一样,第一个(DT_STR,9,1252)
是类型转换。当然,此处不需要强制转换,因为此NULL
已经具有正确的数据类型。