SSIS Как получить часть строки разделителем
Мне нужно выражение SSIS, чтобы получить левую часть строки перед разделителем, а затем поместить новую строку в новый столбец. Я проверил в производном столбце, кажется, нет таких выражений. "Подстрока" могла возвращать только часть строки с фиксированной длиной.
Например, с разделительной строкой '-':
Art-Reading Should return Art
Art-Writing Should return Art
Science-chemistry Should return Science
P.S.
Я знал, что это можно сделать в MySQL с SUBSTRING_INDEX(), но я ищу эквивалент в SSIS или, по крайней мере, в SQL Server
Ответы
Ответ 1
конечно, вы можете:
![enter image description here]()
просто настройте производные столбцы следующим образом:
![enter image description here]()
Вот выражение, облегчающее вашу жизнь:
SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)
FYI, второй "1" означает получение первого вхождения строки "-"
EDIT:
выражение для обработки строки без "-"
FINDSTRING(name,"-",1) != 0 ? (SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)) : name
Ответ 2
Лучше поздно, чем никогда, но я тоже хотел это сделать и нашел это.
TOKEN(character_expression, delimiter_string, occurrence)
TOKEN("a little white dog"," ",2)
мало возвращает источник ниже
http://technet.microsoft.com/en-us/library/hh213216.aspx
Ответ 3
Вы можете указать длину для копирования в функции SUBSTRING
и проверить местоположение тире с помощью CHARINDEX
SELECT SUBSTRING(@sString, 1, CHARINDEX('-',@sString) - 1)
Для выражения SSIS это почти тот же код:
SUBSTRING(@[User::String], 1, FINDSTRING(@[User::String], "-", 1)-1)
Ответ 4
если SUBSTRING length param возвращает -1, то это приводит к ошибке,
"Длина -1 недопустима для функции" SUBSTRING ". Параметр длины не может быть отрицательным. Измените параметр длины на ноль или положительное значение."