Производный столбец SSIS разделяет первые круглые скобки символов

Я пытаюсь потренироваться, как написать выражение в задаче производного столбца, чтобы извлечь код чтения, например (XXXX), из другого столбца.

ID | Ethnicity             | ReadCode
-------------------------------------
 1 | (XXXX) White British  | (XXXX)

Пока у меня есть выражение SUBSTRING (Этническая принадлежность, 1, FINDSTRING (Этническая принадлежность, "")", 1) - 1)

Но выдает ошибку, что символы не совпадают? очевидно, что я полностью лаю не по тому дереву с этим выражением, но как, черт возьми, найти (XXXX) и извлечь?


person SoupOfStars    schedule 05.03.2014    source источник
comment
попробуйте использовать следующее в производном столбце !SUBSTRING(ethnicity,CHARINDEX('(',ethnicity)+1,charindex(')',ethnicity,CHARINDEX('(',ethnicity))-2)   -  person vhadalgi    schedule 05.03.2014
comment
НАЗВАНИЕ: Microsoft Visual Studio -------------------------------------------- Ошибка при импорте данных об этнической принадлежности [Производный столбец [180]]: анализ выражение !SUBSTRING(Ethnicity,CHARINDEX('(',Ethnicity)+1,charindex(')',Ethnicity,CHARIND‌​EX('(',Ethnicity))-2) не удалось. Одинарная кавычка в строке номер 1, символ номер 32, не ожидалось.   -  person SoupOfStars    schedule 05.03.2014
comment
в порядке! попробуй в последний раз! SUBSTRING(ethnicity,CHARINDEX('(',ethnicity)+1,charindex(')',ethnicity))   -  person vhadalgi    schedule 05.03.2014
comment
Ошибка при импорте данных об этнической принадлежности [производный столбец [180]]: не удалось проанализировать выражение SUBSTRING(Ethnicity,CHARINDEX('(',Ethnicity)+1,charindex(')',Ethnicity)) . Одиночная кавычка в строке номер 1, символ номер 31, не ожидалась.   -  person SoupOfStars    schedule 05.03.2014
comment
С двойными кавычками вокруг скобок ошибка: функция charindex не была распознана   -  person SoupOfStars    schedule 05.03.2014
comment
charindex - это функция SQL, а не функция SSIS   -  person user1254579    schedule 05.03.2014
comment
Вероятно, было бы проще использовать компонент сценария и использовать для этого инструменты C#/VB.NET.   -  person shree.pat18    schedule 05.03.2014
comment
@shree-pat18, возможно, но это противоречит цели этого упражнения.   -  person SoupOfStars    schedule 05.03.2014
comment
в sql я могу использовать Select SUBSTRING(Ethnicity,CHARINDEX('(',ethnicity)+1,charindex(')',ethnicity,charindex('(',ethnicity))-2) From <table>;   -  person SoupOfStars    schedule 05.03.2014


Ответы (1)


Не элегантное решение, но это сработало, когда я его протестировал:

"(" + SUBSTRING(Ethnicity,(FINDSTRING(Ethnicity,"(",1) + 1),(FINDSTRING(Ethnicity,")",1) - 2)) + ")"

Дай мне знать.

person Peter_R    schedule 05.03.2014
comment
[Flat File Source [12]] Error: Data conversion failed. The data conversion for column "Ethnicity" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.". думаю, что сейчас я ошибаюсь в другом месте - person SoupOfStars; 05.03.2014
comment
@ Peter_R Проблема, с которой я сталкиваюсь сейчас, заключается в том, что когда я добираюсь до строки 3754, текст превышает длину, указанную в производном столбце, поэтому я пока не могу ответить на ваш ответ. - person SoupOfStars; 05.03.2014
comment
@user31891 user31891 Не можете ли вы использовать параметр «Расширенное редактирование» в производном столбце, чтобы увеличить выходную длину столбца? - person Peter_R; 05.03.2014
comment
Я обнаружил, что: "(" + SUBSTRING(Ethnicity,(FINDSTRING(Ethnicity,"(",1) + 1),(FINDSTRING(Ethnicity,")",1) - 2)) работает, потому что в конце я получаю дополнительный ) . спасибо Peter_R - person SoupOfStars; 05.03.2014
comment
@ user31891 А, хорошо, как я уже сказал, это не было элегантным решением, но рад, что вы его решили. - person Peter_R; 05.03.2014
comment
К сожалению, иногда в поле есть нули, так что теперь у меня ошибка из-за этого? - person SoupOfStars; 13.03.2014