Я нахожу это немного сложным. У меня есть исходная таблица и таблица назначения.
В исходной таблице есть один из столбцов с типом данных char длиной 2. В целевой таблице есть один из столбцов с типом данных int.
Задача состоит в том, чтобы перенести данные из источника в место назначения с помощью пакета SSIS. И в этом процессе я использую преобразование производного столбца для обработки этого преобразования.
Столбец в исходной таблице имеет значение «01», «02» или «03». Принимая во внимание, что столбец назначения, имеющий тип данных int, не может быть сопоставлен с исходным столбцом. Поскольку int распознает только «1». Я хочу только 1, 2 или 3 и опустить 0 в столбце назначения.
Я пробовал несколько вещей, как показано ниже.
Попытка №1:
SUBSTRING(COLNAME, 2, 1)
Это дает мне "1" из "01", но когда я это делаю
(DT_R4) SUBSTRING(COLNAME, 2, 1 )
Меня это полностью подводит.
Попытка №2:
Я пытаюсь бросить, как показано ниже.
(DT_DECIMAL, 2)(DT_R4) SUBSTRING(COLNAME, 2, 1 )
Это тоже не сработало.
Если есть выход, я ценю любое направление здесь.
(DT_DECIMAL, 2) COLNAME
? В данный момент у меня нет доступа к SSIS, но я уверен, что он будет доволен этим. Если вам это нужно как действительное, а не десятичное число, то сделайте(DT_R4)((DT_DECIMAL, 2) COLNAME)
. - person Larnu   schedule 21.03.2019(DT_I4)
, также проблема может быть вызвана некоторыми пустыми или нулевыми значениями - person Hadi   schedule 21.03.2019NULL
. И да, поскольку тип назначения целочисленный, лучше использовать(DT_I4)
- person Binoy   schedule 21.03.2019