2013-09-18 4 views
3

Я пытаюсь написать выражение SSIS, чтобы получить нужную часть строки перед разделителем, а затем поместить новую строку в новый столбец. Я использовал Substring и Findstring в производном столбце, но у меня проблемы.SSIS Как получить часть строки разделителем с использованием Derived Column

Company 
Virgin Altantic - F30008 
Google - F38115 

Мне нужно получить F30008 и F38115.

Я использовал выражение:

(DT_STR,65,1252)(FINDSTRING(Company,"- ",1) != 0 ? (SUBSTRING(Company,1,FINDSTRING(Company,"-",1) + 2)) : Company)

Из этого выражения я получил:

Company 
Virgin Altantic - 
Google - 
+0

Вообще говоря, вы хотите, чтобы также после того, что вы пытались (FindString и подстроки да, но ** в частности **, что вы использовали) и каково точное сообщение об ошибке, которое вы получили. – billinkc

ответ

4

данных:

|     COMPANY | 
|----------------------------| 
| Virgin Altantic - F30008 | 
|   Google - F38115 | 
| Google youtube - F38115169 | 

производный код Колонка:

NewColumn1

SUBSTRING(Company,1,LEN(Company) - FINDSTRING(REVERSE(Company),"-",1) - 1) 

NewColumn2

SUBSTRING(Company,LEN(Company) - FINDSTRING(REVERSE(Company),"-",1) + 3,FINDSTRING(REVERSE(Company),"-",1) - 2) 

Результат:

enter image description here

+0

Спасибо Justin. – Djbril

2

Проблема у вас есть то, что вы хотите, конец строки и ваш текущий код дает вы начинаете строку.

В документации для SUBSTRING указаны 3 параметра: выражение, начальное положение и длина. FINDSTRING возвращает положение разделителя. То, что вы делаете, указывает начальную позицию на 1, первый символ в вашей колонке.

Вместо этого сделайте положение разделителя плюс 2 пробела для учета самого разделителя и пространства. Длина должна быть LEN([Company]) - FINDSTRING([Company],"- ",1)

Во всех версиях SSIS у нас также есть RIGHT, который является специализированной версией SUBSTRING, которую вы также могли бы использовать.

+0

Извинения, но я не думаю, что я это понял. Это то, что вы имеете в виду (DT_STR, 65,1252) (FINDSTRING (Company, «-», 1)! = 0? (SUBSTRING (Компания, 1, LEN ([Компания]) - FINDSTRING ([Компания], «-», 1)): Компания) – Djbril

2

Просто используйте SSIS TOKEN с «-» разделителем, а затем использовать TRIM

+1

это работает только в SSIS 2012 + –

Смежные вопросы