使用 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()
函数来完成。我更喜欢使用 TOKEN
和 TOKENCOUNT()
函数来做到这一点:
TOKEN([File Name],"\",TOKENCOUNT([File Name],"\"))
示例:
TOKEN("\\Server\Folder1\Folder2\Folder3\File21.csv","\",TOKENCOUNT("\\Server\Folder1\Folder2\Folder3\File21.csv","\"))
结果:
File21.csv
使用 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()
函数来完成。我更喜欢使用 TOKEN
和 TOKENCOUNT()
函数来做到这一点:
TOKEN([File Name],"\",TOKENCOUNT([File Name],"\"))
示例:
TOKEN("\\Server\Folder1\Folder2\Folder3\File21.csv","\",TOKENCOUNT("\\Server\Folder1\Folder2\Folder3\File21.csv","\"))
结果:
File21.csv