如何在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不是。希望这给了我的查询足够的信息。
答
__ $ update_mask列的类型为varbinary,长度为128个字节。没有办法将它转换成INT或BIGINT(不丢失信息),因为转换目标大小分别是4和8个字节。尽管我只想考虑128字节中的前8个字节。但是,我再次找不到任何支持的数据类型或在SSIS中投射可以完成这项工作的数据类型。虽然这可以在数据库引擎中完成,并在稍后引入SSIS。
什么是症状?当你说它不起作用时,你的意思是什么? – 2009-08-10 08:21:48
对于我尝试的大多数SSIS数据类型,CAST失败。 – Faiz 2009-08-10 13:59:09