Формула использования подстроки SSIS для длины

Попытка настроить производный от SSIS столбец в BIDS 2008. У меня есть вход с одним столбцом [Column 0], который содержит строку с разделителями. Мне нужна формула для извлечения одного из "полей" из входного столбца, однако длина является переменной. Вот формула, которую я сейчас использую:

SUBSTRING( [Column 0],(FINDSTRING( [Column 0], "|",10 )+1),(FINDSTRING( [Column 0], "|",11)-FINDSTRING( [Column 0],"|",10)-1))

Когда я ввожу эту формулу, она становится красной и говорит, что параметр длины недопустим. Попытка определить длину данных путем нахождения позиции следующей итерации разделителя, а затем вычитания из позиции текущей итерации разделителя.

Когда я заменяю часть длины формулы статическим числом, ошибка исчезает.

Может кто-нибудь помочь мне исправить формулу выше, пожалуйста? Спасибо!

2 ответа

Использовать TOKEN функция, предоставляемая SSIS для разделения на | и найдите "поле", которое вы хотите.

TOKEN (выражение SSIS)

Возвращает токен (подстроку) из строки на основе указанных разделителей, разделяющих токены в строке, и номера токена, который обозначает, какой токен должен быть возвращен.

TOKEN(character_expression, delimiter_string, occurrence)

НАЙТИ НОМЕР!! Ширина выходного столбца в моем источнике данных плоского файла была установлена ​​равной 5000. Я уменьшил ширину до 4000 и закрыл, а затем снова открыл проект. Он показал мне ошибку в плоском файле из-за изменения метаданных. Когда я повторно сохранил файл, а затем снова ввел формулу выше, все работало как положено.

Спасибо всем!

Другие вопросы по тегам