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操作数不是输入列或强制转换的结果,不能与条件运算一起使用。要执行此操作,需要使用强制转换运算符显式强制转换操作数
这似乎是一个奇怪的任意限制,但它是存在的,因此您需要强制转换