从反斜杠SQL / SSIS分隔字符串

时间:2019-04-03 21:09:59

标签: sql sql-server ssis expression etl

我试图基于反斜杠来分隔字符串,我尝试使用令牌功能,但随后意识到“ \”字符是转义字符。有什么方法可以用反斜杠来分隔字符串吗?

这是我的令牌功能当前的外观。

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

3 个答案:

答案 0 :(得分:4)

首先使用双反斜杠\\而不是一个\,并且您应该将TOKEN与TOKEN Count函数一起使用以检索文件名:

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

因此,如果您要从完整文件路径中提取文件名,tokencount将检测到反斜杠的最新发生。示例:

考虑@[User::DynamicFilename]的值为:

  

C:\ My Files \ Folder \ file.txt

由于TOKENCOUNT()将返回3,因此表达式be将为

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

它将返回

  

File.txt

答案 1 :(得分:1)

您需要将反斜杠的数量加倍。

在您的示例中,应该是

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

答案 2 :(得分:1)

如果您不知道使用令牌的深度,建议您使用以下内容来获得结果。

right(@[User::DynamicFilename],findstring(reverse(@[User::DynamicFilename]),"\\")-1)