SSIS: заменить нулевое значение на 0 в выражении производного столбца

Я пытаюсь заменить нулевое значение моего файла Excel на 0, но получил ошибку «Тип данных DT_14 и DT_WSTR несовместимы для бинарного оператора» ==. Я использую производный столбец, и пока вот мое выражение < strong>20150921 == "" ? 0 : 20150928 Я также пробовал это, ISNULL (20150921) ? 0 : 20150921, но данные, передаваемые в пункт назначения, имеют значение 20150921 вместо его реальная стоимость.

Кстати, 20150921 — это тип string [DT_STR].

Кроме того, есть сценарий, когда мой столбец 20150928 меняется на F11, F12 и так далее. Это почему?

Новичок здесь! Извини.


person r-r    schedule 09.10.2015    source источник


Ответы (1)


Вы сравниваете число (20150921) со строкой (""), поэтому выдает ошибку Тип данных DT_14 и DT_WSTR несовместимы для бинарного оператора "==". Тем не менее ваше выражение почти правильное, вам просто нужно сравнить имя столбца, а не значение столбца.

Пример: у вас есть файл Excel со столбцом «Столбец1», который содержит числа (20150921) и несколько пустых значений. SSIS обрабатывает каждый столбец Excel как строку, поэтому вам нужно преобразовать ее с помощью выражения: Column1 == "" ? 0 : (DT_I4)Column1. Это означает, что каждое пустое значение будет преобразовано в 0, в противном случае оно будет просто приведено к целому числу (четыре байта целого числа). Вы также можете использовать тип данных DT_I8.

РЕДАКТИРОВАТЬ: если ваш столбец называется 20150921, попробуйте вместо этого использовать [20150921].

person Lkor    schedule 13.10.2015
comment
Попробую это, спасибо! просто пояснение к последней части. Вы имеете в виду, что я должен превратить заголовок столбца Excel в [20150921]? - person r-r; 15.10.2015
comment
Нет, вам не нужно называть свой столбец, например [20150921], просто используйте его в форме выражения в поле производного столбца в службах SSIS. [20150921] == ? 0 : (DT_I4)[20150921] Без скобок интерпретатор кода подумал бы, что это не имя столбца, а просто какое-то случайное число. - person Lkor; 16.10.2015