使用 SSIS 派生列转换在最后一个反斜杠后检索文本

Retrieve text after last back slash using SSIS Derived Column transformation

使用 SQL Server 2014。

我有一个字段包含一个包含完整文件路径的字符串,即

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

我只想要最后一个反斜杠之后的内容,即

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)

但是它不起作用,它一直说单引号不是预期的。我也试过双引号无济于事。

我认为你的参数倒退了。 FINDSTRING() 先要您搜索的内容,然后才是您要搜索的内容。您将需要双引号和转义的反斜杠。这应该有效:

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

即使这可以使用 RIGHT()SUBSTRING() 函数来完成。我更喜欢使用 TOKENTOKENCOUNT() 函数来做到这一点:

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

示例:

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

结果:

File21.csv