SSIS将char转换为布尔/位

时间:2009-02-16 18:23:04

标签: sql-server ssis

我有一个SSIS包来加载数据;您可能还记得,当我尝试将它们作为位标志加载到SQL Server中时,数据文件中有标记为Y / N char(1)。我将数据文件中的列指定为String [DT_STR],我有一个数据转换任务,根据以下表达式将它们转换为布尔值(尽管有SSIS,但我收到了相同的转换错误,只是将它们指定为DT_BOOL)让我说出它应该考虑的值为boolean):

[ColumnName] == "Y" ? (DT_BOOL)1 : (DT_BOOL)0

运行包会出现错误,并告诉我Invalid character value for cast specificationThe value could not be converted because of a potential loss of data实际导入到SQL Server(通过OLE DB目标)。

我在这里错过了什么来让它正确转换?

3 个答案:

答案 0 :(得分:17)

试试这个:

(DT_BOOL)([ColumnName] == "Y" ? 1 : 0)

这还具有正确自动设置派生列的数据类型的优点。

答案 1 :(得分:11)

我能够通过使用派生列来解决它,而不是替换char列,创建设置为DT_BOOL类型的新列,如下所示:

[Recycled] == "Y" ? True : False

答案 2 :(得分:0)

我遇到了与

相同的问题

(DT_BOOL)([ColumnName] ==“Y”?1:0)

我只能通过从表达式中取出“(DT_BOOL)”部分并通过选择“Boolean [DT_BOOL]”将其转换为布尔值到“数据类型”部分来完成工作。之后没问题。