2

使用 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)

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

4

2 回答 2

2

我认为你的参数倒退了。FINDSTRING()首先想要您正在搜索的东西,然后是您正在寻找的东西。您将需要双引号和转义的反斜杠。这应该有效:

RIGHT( [FileName] , FINDSTRING(REVERSE( [FileName] ), "\\" ,1)  -1)
于 2020-02-19T17:58:46.490 回答
1

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

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

例子:

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

结果:

文件 21.csv

于 2020-03-10T19:43:46.103 回答