我在 SSIS 派生列组件中设置了以下表达式:
TRIM(xCOL) == "" ? (DT_STR,7,1252)xCOL : NULL(DT_STR,7,1252)
但是,这无法验证 - 我收到以下错误:
这里有什么问题?
最佳答案
Unicode - 您认为可以正常工作的所有 SSIS 事物的祸根。
默认情况下,字符串表达式的返回类型为 Unicode (DT_WSTR)。您可以通过用空字符串 ""
替换最后一个表达式来证明这一点。查看派生列分配的类型 - 它是 DT_WSTR
TRIM(xCOL) == "" ? (DT_STR,7,1252)xCOL : ""
解决方法是将整个表达式的结果转换为您想要的类型。 (我还认为您有一个逻辑问题,因为我假设您正在检查修剪后的字符串以确定它是否为空/零长度,然后将其强制转换为 NULL)。另请注意,如果您的 xCOL 字段确实为 NULL,这将会爆炸。
(DT_STR, 7, 1252)((TRIM(xCOL) == "") ? NULL(DT_WSTR, 7) : TRIM(xCOL))
源数据
SELECT 'Hello' AS xCOL
UNION ALL SELECT ''
结果
关于SSIS 表达式无法验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20099331/