Получить текст после последнего возврата sla sh, используя преобразование производного столбца служб SSIS - PullRequest
2 голосов
/ 19 февраля 2020

Использование SQL Server 2014.

У меня есть поле, содержащее строку, содержащую полный путь к файлу, т.е.

\\Server\Folder1\Folder2\Folder3\File21.csv

Я хочу только то, что находится после последнего backsla sh т.е.

File21.csv

Так что в мире SQL я бы использовал:

Select RIGHT([FileName],charindex('\',reverse([FileName]),1)-1) as FileNameNew from mytable

Однако как мне это сделать в производном столбце в SSIS? CHARINDEX отсутствует, поэтому вы должны использовать FINDSTRING. Это мое выражение:

RIGHT( [FileName] , FINDSTRING('\', REVERSE( [FileName] ) ,1)  -1)

Но оно не работает, оно продолжает говорить, что ни одной кавычки не ожидалось. Я также пробовал двойные кавычки безрезультатно.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Я думаю, что ваши параметры задом наперед. FINDSTRING() хочет сначала то, что вы ищете, затем то, что вы ищете. И вам понадобятся двойные кавычки и спасенная обратная коса sh. Это должно работать:

RIGHT( [FileName] , FINDSTRING(REVERSE( [FileName] ), "\\" ,1)  -1)
1 голос
/ 10 марта 2020

Даже если это можно сделать с помощью функций RIGHT() или SUBSTRING(). Для этого я предпочитаю использовать функции TOKEN и TOKENCOUNT():

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

Пример:

TOKEN("\\\\Server\\Folder1\\Folder2\\Folder3\\File21.csv","\\",TOKENCOUNT("\\\\Server\\Folder1\\Folder2\\Folder3\\File21.csv","\\"))

Результат:

Файл21.csv

...