Подтвердить что ты не робот

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

4b9b3361

Ответ 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 ". Параметр длины не может быть отрицательным. Измените параметр длины на ноль или положительное значение."