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

问题描述:

我需要在转换中使用二进制数据作为整数,并做一些操作,但如何做铸造?我尝试了许多SSIS数据类型,但没有运气。顺便说一下,我不想使用脚本任务。如何在SSIS中将CAST SQL Server类型varbinary转换为整数?


[更新下面部分]

的数据是存储在CDC功能fn_cdc_get_net_changes的__ $ update_mask列中的值。以下是我试图在SSIS中投,

(__$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不是。希望这给了我的查询足够的信息。

+0

什么是症状?当你说它不起作用时,你的意思是什么? – 2009-08-10 08:21:48

+0

对于我尝试的大多数SSIS数据类型,CAST失败。 – Faiz 2009-08-10 13:59:09

__ $ update_mask列的类型为varbinary,长度为128个字节。没有办法将它转换成INT或BIGINT(不丢失信息),因为转换目标大小分别是4和8个字节。尽管我只想考虑128字节中的前8个字节。但是,我再次找不到任何支持的数据类型或在SSIS中投射可以完成这项工作的数据类型。虽然这可以在数据库引擎中完成,并在稍后引入SSIS。