Sql SSIS派生列nvarchar到位

Sql SSIS派生列nvarchar到位,sql,sql-server,ssis,Sql,Sql Server,Ssis,我有一个.csv文件,它有一个名为active的列,其中包含“Yes”和“No”的值 我已经在SSIS包中使用了派生组件,但我正在努力使表达式正常工作。Sql server中的字段的数据类型为bit Active == "YES" ? "0" : "1" 你知道我哪里会出错吗?我也不能让它像那样工作。但这是有效的 REPLACE(REPLACE([Column 1],"yes","1"),"no","0") 你快到了。这将有助于: (DT_BOOL)(UPPER(Active) == "YE

我有一个.csv文件,它有一个名为active的列,其中包含“Yes”和“No”的值

我已经在SSIS包中使用了派生组件,但我正在努力使表达式正常工作。Sql server中的字段的数据类型为bit

Active == "YES" ? "0" : "1"

你知道我哪里会出错吗?

我也不能让它像那样工作。但这是有效的

REPLACE(REPLACE([Column 1],"yes","1"),"no","0")

你快到了。这将有助于:

(DT_BOOL)(UPPER(Active) == "YES" ? 1 : 0)
因此,您只需使用1和0,而不是“1”和“0”(您需要的是数字,而不是字符串),然后将整个内容转换为DT_BOOL,这将很好地映射到SQL Server的
类型

我还添加了上限,因为您似乎不确定您的值是“Yes”还是“Yes”,否则字符串比较将区分大小写

(另外,请注意,我假设您希望将“是”映射到1,将“否”映射到0,这是常见的方法…

看看这个,您也可以尝试将结果转换为(DT_BOOL)