【问题标题】:DT_BOOL value of TRUE maps to 255 in a tinyint field. Why not 1?TRUE 的 DT_BOOL 值映射到 tinyint 字段中的 255。为什么不是1?
【发布时间】:2009-08-19 13:18:18
【问题描述】:

我正在使用 SQL Server Integration Services 2008 将某个布尔值放入数据库中,最初我使用的是 DT_BOOL(布尔值)的 SSIS 类型。

但是,在数据库中,布尔值被存储为 tinyint 字段(出于遗留原因)。 TRUE 的布尔值将在数据库中保存为 255(所有位都打开),而不是更传统的值 1。

有没有办法强制将TRUEDT_BOOL 值映射到1 而不是255?还是我需要将 SQL 字段更改为 bit,或者使用像 DT_UI1 这样的数字 SSIS 类型?

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    您可以在您的 SSIS 包中添加进一步的转换任务,将 TRUE 的 DT_BOOL 值转换为 1 和 SQL Server 数据类型 tinyint 的 SSIS 等效项,但这当然会为您的处理增加一个额外的步骤。

    如果这确实是您的选择,那么在我看来,您最好将数据库数据类型修改为更合适的位数据类型。

    【讨论】:

    • 现在,我最终使用 DT_I4 而不是 DT_BOOL
    猜你喜欢
    • 2014-11-20
    • 2011-01-20
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2017-08-04
    • 2011-02-13
    • 2016-08-11
    • 2013-06-26
    相关资源
    最近更新 更多