Строка с разделителями в обратном слэше SQL / SSIS - PullRequest
2 голосов
/ 04 апреля 2019

Я пытаюсь разграничить строку на основе обратной косой черты, я попытался использовать функцию токена, но затем понял, что символ '\' является escape-символом.Есть ли способ отделить строку от обратной косой черты?

Так выглядит моя функция токена.

Token(@[User::DynamicFilename],"\", 7)

Ответы [ 3 ]

4 голосов
/ 04 апреля 2019

Прежде всего используйте двойную обратную косую черту \\ вместо одной \, и вам следует использовать TOKEN с функциями счетчика TOKEN, чтобы получить имя файла:

TOKEN(@[User::DynamicFilename],"\\", TOKENCOUNT(@[User::DynamicFilename],"\\"))

Так что, если вы ищетечтобы извлечь имя файла из полного пути к файлу, tokencount обнаружит последнее возникновение обратной косой черты.Пример:

Учтите, что значение @[User::DynamicFilename] равно:

C: \ My Files \ Folder \ file.txt

, начиная с TOKENCOUNT()вернет 3, тогда выражение будет равно

TOKEN(@[User::DynamicFilename],"\\",3)

И вернется

File.txt

1 голос
/ 04 апреля 2019

Если вы не знаете, как далеко зайти с токеном, я предлагаю следующее, чтобы получить ваш результат.

right(@[User::DynamicFilename],findstring(reverse(@[User::DynamicFilename]),"\\")-1)
1 голос
/ 04 апреля 2019

Вам нужно удвоить число ваших обратных косых черт.

В вашем примере это должно быть

Token(@[User::DynamicFilename],"\\", 7)
...