ssis substring charindex, разделенное имя и фамилия

У меня есть источник Excel в SSIS со столбцом с именем [Name], в котором есть запись типа Joe Bloggs

Я хочу разделить [Имя] на [Имя] и [Фамилия]

Как я могу сделать два производных столбца, пожалуйста, поскольку это не работает как оператор SQL

Как обычный SQL:

SUBSTRING([Name], 1, CHARINDEX(' ', [Name]) - 1) AS [Forename]

SUBSTRING([Name], CHARINDEX(' ', [Name]) + 1, LEN([Name])) AS [Surname]

CHARINDEX() не работает в производных столбцах

Пожалуйста помоги


person Joeysonic    schedule 11.08.2020    source источник


Ответы (2)


Правильно, SSIS — это продукт, отличный от TSQL, поэтому вам нужно использовать синтаксис, соответствующий языку.

Вы захотите добавить производный компонент столбца, чтобы найти первое пространство. Оператор FINDSTRING — это то, что вам нужно. FINDSTRING([Name]," ",1) и добавьте его в качестве нового столбца с именем SpacePosition.

После этого добавьте второй компонент производного столбца, чтобы вы могли создать столбцы имени/фамилии. Синтаксис здесь должен соответствовать тому, что вы предоставили

SUBSTRING([Name], 1, [SpacePosition] - 1)
RIGHT([Name], [SpacePosition] + 1)

Причина, по которой я рекомендую делать это в два этапа, заключается в том, что если вы получаете неверные результаты, то вы можете, по крайней мере, подтвердить, что SpacePosition дал ожидаемые результаты. Потому что вы можете получить Madonna, Prince или Lee Harvey Oswald во входных данных.

Удалить текст из строки в производном столбце SSIS< /а>

person billinkc    schedule 11.08.2020
comment
Привет, я пробовал вышеизложенное без радости, извините, я получаю сообщение об ошибке - пожалуйста, помогите @billinkc - person Joeysonic; 13.08.2020
comment
Кроме того, используя подстроку, у некоторых имен есть отчества, мне просто нужно первое имя, пожалуйста, x есть имена, такие как Джо Фред Блоггс. пожалуйста помоги - person Joeysonic; 13.08.2020
comment
Итак, данные — это Джо Фред Блоггс, что входит в Имя и что входит в Фамилию? - person billinkc; 13.08.2020
comment
Просто Фред в имени и Bloggs в фамилии ... некоторые случайно ввели два нечетных отчества, нужно их выловить. пожалуйста помогите х - person Joeysonic; 14.08.2020
comment
исправил ошибку в диспозиции, но не могу избавиться от отчества x, пожалуйста, помогите - person Joeysonic; 14.08.2020
comment
разрешено с помощью чего-то вроде SUBSTRING(‹поле›, FINDSTRING(‹поле›, , 2)+1, LEN(‹поле›)).. спасибо, команда xxx - person Joeysonic; 14.08.2020

Вы можете использовать функции TOKEN() и TOKENCOUNT() для разделения столбца следующим образом:

Имя:

TOKEN([Name]," ",1)

Фамилия:

TOKEN([Name]," ",TOKENCOUNT([Name]," "))

Кроме того, функция FINDSTRING() является альтернативой функции SQL CHARINDEX() в выражениях SSIS. В качестве примера:

FINDSTRING([Name], " ", 1)   

Ссылки

person Hadi    schedule 19.08.2020