代码之家  ›  专栏  ›  技术社区  ›  Faiz

如何在SSIS中将SQL Server类型varbinary强制转换为整数?

  •  0
  • Faiz  · 技术社区  · 17 年前

    我需要在转换中使用二进制数据作为整数并进行一些操作,但是如何进行转换呢?我尝试了许多SSIS数据类型,但没有成功。顺便说一下,我不想使用脚本任务。


    [下文更新部分]

    数据是存储在CDC函数fn_CDC_get_net_changes的_u$update_mask列中的值。以下是我在SSIS中尝试的演员阵容,

    (__$operation == 4) && (((DT_I8)__$update_mask & @[User::SCDColumnNumber]) > 0)
    

    SELECT 
    CASE WHEN (CAST(__$update_mask as int) & 16)>0 THEN 1 ELSE 0 END ScdType2,
    CAST(__$update_mask as int) Change,
    * FROM 
    cdc.fn_cdc_get_net_changes_dbo_Transactions
    (sys.fn_cdc_get_min_lsn('dbo_Transactions')
    ,sys.fn_cdc_get_max_lsn(),'all with mask')
    

    这很好用。但SSIS演员阵容并非如此。希望这能为我的查询提供足够的信息。

    1 回复  |  直到 17 年前
        1
  •  0
  •   Faiz    17 年前

    __$update_mask列的类型为varbinary,长度为128字节。无法将其强制转换为INT或BIGINT(不丢失信息),因为强制转换目标大小分别为4字节和8字节。虽然我只想考虑128字节的前8字节。但同样,我在SSI中找不到任何支持的数据类型或强制转换可以完成这项工作。尽管这可以在DB引擎中完成,并在稍后提交给SSIS。

    推荐文章