SSIS - 将nchar空字符串转换为int时的表达式计算错误

时间:2014-05-29 07:45:21

标签: sql sql-server sql-server-2008-r2 ssis

我在数据库中有一个nchar(10)字段,我尝试在SSIS包中转换为int。

该字段包含3个不同的值:空字符串(SSMS中的len(field)返回0)和两个数字。在SSIS中,我在此字段中添加了以下表达式:

LEN(field) > 0 ? (DT_I4)field : (DT_I4)0 

然而," DTS_E_EXPREVALSTATIC_COMPUTATIONFAILED" (-1073442796)错误,但仅适用于包含空字符串的行。为了消除这个问题,我使用了

LEN(TRIM(field)) > 0 ? (DT_I4)field : (DT_I4)0

这有效,但为什么会这样呢?当SQL Server中的len显示为0时,为什么会失败?这是nchar / DT_WSTR的一些问题吗?

1 个答案:

答案 0 :(得分:4)

我认为MS SQL中的LEN()和SSIS中的LEN()行为不同。

LEN(SSIS表达): 返回字符表达式中的字符数。如果字符串包含前导和尾随空白,则函数在计数中包含

LEN(Transact-SQL): 返回指定字符串表达式的字符数,不包括尾随空白。

Ref:
http://technet.microsoft.com/en-us/library/ms141797.aspx
http://technet.microsoft.com/en-us/library/ms190329%28v=sql.110%29.aspx