MS SQL Server 位列导出为布尔值

Posted

技术标签:

【中文标题】MS SQL Server 位列导出为布尔值【英文标题】:MS SQL Server bit column exported as boolean 【发布时间】:2019-05-17 08:48:43 【问题描述】:

我正在尝试将数据从 SQL Server 导出到平面文件。

数据包括位列 0/1,我需要它,但它被导出为布尔值 TRUE/FALSE,这导致 ETL 批量插入失败。

我尝试将数据映射更改为单字节整数、浮点数、数字、字符串、文本,希望得到一个简单的 0/1,但没有任何效果。

感谢任何有关如何解决此问题的指针(除了替换结果文件中的文本)。

【问题讨论】:

这是否相关dwbi1.wordpress.com/2011/11/16/… 也许是关于导出为 INT 的案例声明? @scsimon 我正在使用导出向导,没有添加案例语句的选项。还是有其他导出方式? 【参考方案1】:

在您的选择中添加一个 IIF 以将 Boolean 转换为 0/1 以导出:

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

【讨论】:

【参考方案2】:

问题是,SQL Server 有一个位数据类型。它没有布尔值,而 SSIS 使用 .Net 数据类型,而不是 SQL 数据类型。它支持布尔值,而不是位。尽管它具有内置转换功能,但可以解决此类问题。所以在我看来,你需要使用派生列来解决这个问题。

【讨论】:

以上是关于MS SQL Server 位列导出为布尔值的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL Server 中的 SELECT 中的布尔值转换为 C# 中的布尔值?

如何在 sql server 2008 中生成随机布尔值?

SQL Server Compact Edition ISNULL(sth, ' ') 返回一个布尔值?

SQL CE select语句中的反向布尔(位)值

PL/SQL 将字符串转换为布尔值

MS Access 布尔字段和默认 (True) 值