Формула использования подстроки 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 и закрыл, а затем снова открыл проект. Он показал мне ошибку в плоском файле из-за изменения метаданных. Когда я повторно сохранил файл, а затем снова ввел формулу выше, все работало как положено.
Спасибо всем!