将MS SQL Server的位列导出为布尔值

6
我正在尝试将数据从SQL Server导出到平面文件中。其中包括一个位列0/1,我需要它保持原样,但它被导出为布尔值TRUE/FALSE,这导致ETL批量插入失败。

enter image description here

我尝试将数据映射更改为单字节整数、浮点数、数字、字符串、文本,希望能得到简单的0/1,但都没有成功。 欢迎提供任何解决方法(除了替换结果文件中的文本)。

这个链接是否相关 https://dwbi1.wordpress.com/2011/11/16/ssis-truefalse-and-10-values-on-bit-columns/ - Dale K
1
也许可以使用一个针对导出的 CASE 语句来将其转换为 INT 类型? - S3S
@scsimon 我正在使用导出向导,但没有选项可以添加 case 语句。或者还有其他导出的方法吗? - Katia
2个回答

2

在你的select语句中添加IIF函数,将Boolean转换为0/1以进行导出:

SELECT Name, Code
    ,IIF(EuroZone = 1, 1, 0) AS EuroZone
    ,IIF(Visible= 1, 1, 0) AS Visible
FROM your_table

0
问题在于,SQL Server 有一个位数据类型。它没有布尔类型,而 SSIS 使用的是 .Net 数据类型,而不是 SQL 数据类型。它支持布尔类型,而不是位类型。虽然它有内置的转换来解决这样的问题。所以我认为,你需要使用派生列来解决这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接