Sql server 将字符转换为布尔/位的SSI

Sql server 将字符转换为布尔/位的SSI,sql-server,ssis,Sql Server,Ssis,我有一个SSIS包来加载数据;您可能还记得,当我试图将数据文件中的标志作为位标志加载到SQL Server中时,这些标志以Y/N char(1)的形式存在于数据文件中。我将数据文件中的列指定为 String [DTYSTR] ,并且我有一个数据转换任务将它们转换成布尔表达式,基于下面的表达式(我收到了相同的转换错误,只需将它们指定为DTTBOOL,首先,尽管SSIS要求我说它应该考虑什么值作为布尔): 运行包时会出现错误,并告诉我强制转换规范的字符值无效,无法转换该值,因为实际导入到SQL Se

我有一个SSIS包来加载数据;您可能还记得,当我试图将数据文件中的标志作为位标志加载到SQL Server中时,这些标志以Y/N char(1)的形式存在于数据文件中。我将数据文件中的列指定为<代码> String [DTYSTR] ,并且我有一个数据转换任务将它们转换成布尔表达式,基于下面的表达式(我收到了相同的转换错误,只需将它们指定为DTTBOOL,首先,尽管SSIS要求我说它应该考虑什么值作为布尔):

运行包时会出现错误,并告诉我强制转换规范的
字符值无效
无法转换该值,因为实际导入到SQL Server时(通过OLE DB目标)可能会丢失数据

要使其正确转换,我缺少了什么?

请尝试以下方法:

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

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

我能够通过使用派生列来解决此问题,并创建设置为
DT\u BOOL
类型的新列,而不是替换char列,如下所示:

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

我也有同样的问题

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


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

抱歉,我误解了,您不能用其他类型的列替换SSIS中的任何列,您必须始终添加新列。虽然在转换任务中,您可以使用相同的名称创建另一列,但根据我的经验,并非管道中稍后的所有组件都将完全限定的名称显示为component.column,所以它既烦人又危险。对-我发现了这一点;-)我一直在考虑做一些类似的事情,但我在数据转换中找不到任何地方可以这样做。你在哪里定义它?我相信我找到了-它实际上是派生列转换。
[Recycled] == "Y" ? True : False