我有一个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 specification
和The value could not be converted because of a potential loss of data
实际导入到SQL Server(通过OLE DB目标)。
我在这里错过了什么来让它正确转换?
答案 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]”将其转换为布尔值到“数据类型”部分来完成工作。之后没问题。