【问题标题】:How to CAST SQL Server type varbinary to integer in SSIS?如何在 SSIS 中将 SQL Server 类型 varbinary 转换为整数?
【发布时间】:2009-08-07 13:55:54
【问题描述】:

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


[更新以下部分]

数据是存储在 CDC 函数 fn_cdc_get_net_changes 的 __$update_mask 列中的值。以下是我在 SSIS 中尝试的 CAST,

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

对应的TSQL代码将是

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 CAST 不是。希望这能提供有关我的查询的足够信息。

【问题讨论】:

  • 什么症状?你说它不起作用是什么意思?
  • 对于我尝试过的大多数 SSIS 数据类型,CAST 都失败了。

标签: ssis types type-conversion


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    相关资源
    最近更新 更多