2009-08-07 2 views
0

Мне нужно использовать двоичные данные в преобразовании как целое число и делать некоторые манипуляции, но как сделать кастинг? Я пробовал много типов данных SSIS, но не повезло. Кстати, я не хочу использовать задачу скрипта.Как CAST SQL-тип varbinary для целого в SSIS?


[Обновленный ниже раздел]

Данные значения, хранящиеся в __ $ update_mask столбце функции fn_cdc_get_net_changes CDC. Ниже приводится CAST я пытаю в 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

Каков симптом? Что вы имеете в виду, когда говорите, что это не работает? –

+0

CAST не работает для большинства типов данных SSIS, которые я пробовал. – Faiz

ответ

0

Столбец __ $ update_mask имеет тип varbinary, длина 128 байт. Его невозможно отбросить (без потери информации) до INT или BIGINT, так как размер места назначения для роли составляет 4 и 8 байтов соответственно. Хотя я хотел рассмотреть только первые 8 байтов из 128 байтов. Но опять же, я не смог найти поддерживаемый тип данных или кастинг в SSIS, которые могут выполнять эту работу. Хотя это можно сделать в БД-движке и позже доставить в SSIS.