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
Sql server 2008 SSIS基本数据转换功能_Sql Server 2008_Ssis - Fatal编程技术网

Sql server 2008 SSIS基本数据转换功能

Sql server 2008 SSIS基本数据转换功能,sql-server-2008,ssis,Sql Server 2008,Ssis,在派生列转换中考虑以下语句: 派生列名: EFFECTIVE_DATE 表达方式: TRIM([EFFECTIVE DATE]) == "" ? (DT_WSTR,255)NULL(DT_WSTR,255) : [EFFECTIVE DATE] 我的理解是: 如果“生效日期修剪”为空字符串,则将“生效日期NULL”指定为长度为255的Unicode字符串。否则,将“生效日期”指定为其当前值 我假设代码就是这样做的,但我对以下语法感到困惑: (DT_WSTR,255)NULL(DT_W

在派生列转换中考虑以下语句:

派生列名:

EFFECTIVE_DATE
表达方式:

    TRIM([EFFECTIVE DATE]) == "" ? (DT_WSTR,255)NULL(DT_WSTR,255) : [EFFECTIVE DATE]
我的理解是:

如果“生效日期修剪”为空字符串,则将“生效日期NULL”指定为长度为255的Unicode字符串。否则,将“生效日期”指定为其当前值

我假设代码就是这样做的,但我对以下语法感到困惑:

(DT_WSTR,255)NULL(DT_WSTR,255)
我只希望:

(DT_WSTR,255)NULL
我认为前导(DT_WSTR,255)是紧跟其后的值的强制转换,即空值。为什么紧接着会有另一个(DT_WSTR,255)。我遗漏了什么?

该表达式本身看起来有点多余,如下所示:

NULL(DT_WSTR,255)
…表示“生成长度为255的DT_WSTR类型的空值”

所以它看起来像:

(DT_WSTR,255)NULL(DT_WSTR,255)
…表示“将长度为255的DT_WSTR类型的空值强制转换为长度为255的DT_WSTR类型”

因此,从表面上看,似乎类型转换实际上什么都不做。但是,如果您将其禁用,可能会遇到一个问题,即您将在运行时遇到此错误:

对于条件运算符的操作数,数据类型DT_STR仅支持输入列和强制转换操作。表达式“FINDSTRING([string col],”,1)=0?[string col]:NULL(DT_STR,2551252)”的DT_STR操作数不是输入列或强制转换的结果,不能与条件运算一起使用。要执行此操作,需要使用强制转换运算符显式强制转换操作数

这似乎是一个奇怪的任意限制,但它是存在的,因此您需要强制转换