SSIS IsNumeric表达式错误

SSIS IsNumeric表达式错误,ssis,Ssis,Hi am在ssis包中使用以下表达式 !ISNULL((DT_I4)路由)?(DT_WSTR,50)(“SB”+子串(右(路线,2),1,1)):(DT_WSTR,50)路线 当路由值为数字时为成功,当路由值为非数字时为失败 下面的描述。有什么帮助,如何解决这个问题 [派生列[111]]错误:SSIS错误代码DTS_E_inducedTransfersFailureOnError。“组件”派生列(111)失败,因为发生错误代码0xC0049067,“输出列”列(679)上的错误行处理指定错误时

Hi am在ssis包中使用以下表达式 !ISNULL((DT_I4)路由)?(DT_WSTR,50)(“SB”+子串(右(路线,2),1,1)):(DT_WSTR,50)路线

当路由值为数字时为成功,当路由值为非数字时为失败 下面的描述。有什么帮助,如何解决这个问题

[派生列[111]]错误:SSIS错误代码DTS_E_inducedTransfersFailureOnError。“组件”派生列(111)失败,因为发生错误代码0xC0049067,“输出列”列(679)上的错误行处理指定错误时失败。指定组件的指定对象上发生错误。在此之前可能会发布错误消息,其中包含有关故障的更多信息


[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PROCESSINPUTFAILED。组件“派生列”(111)上的ProcessInput方法在处理输入“派生列输入”(112)时失败,错误代码为0xC0209029。标识的组件从ProcessInput方法返回错误。该错误特定于组件,但该错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关失败的详细信息。

您的条件语句的以下部分“(DT_I4)Route”正试图将Route强制转换为4字节整数。您不需要强制转换到DT_I4的路由来测试Null

编辑--
我没有注意到您正在尝试测试非数字。 下面是我将如何做到这一点:

在派生列转换中,有一列具有表达式
(DT_I4)Route
,另一列具有表达式
(DT_WSTR,50)Route
在源自
(DT_I4)Route
的列上,将错误输出设置为重定向行

在错误输出流上,有第二个使用表达式的派生列
(DT_WSTR,50)(“SB”+子字符串(右(Route,2),1,1))
,它与第一个派生列转换中的列命名相同,并使用Union ALL将它们重新合并在一起


根据我的测试,您使用的表达式在遇到错误时立即返回null(将非数字转换为DT_I4是一个错误),但前提是您将错误输出设置为fail component以外的内容。忽略失败将不起作用,因为对于值为非数字的整个表达式,您将只得到null。

已使用此选项检查isNumeric“!isnull((DT_I4)[col])”表达式。对于数值输入,它返回true;对于非数值输入,它返回null。资料来源:我更新了我的答案,以反映我错过了你在上面测试数字的事实。