sql-server - 使用 SSIS 派生列转换检索最后一个反斜杠之后的文本

标签 sql-server ssis sql-server-2014 etl derived-column

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

关于sql-server - 使用 SSIS 派生列转换检索最后一个反斜杠之后的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60303451/

相关文章:

sql - 如何从 SQL Server 中的 EAV 表创建 JSON

mysql - DATEDIFF 函数在 sqlserver 中显示错误输出

sql-server - SSIS将具有不同类型列的表导出到平面文件中

用于计算百分比分布的 SUM Count 列的 SQL 语法

sql - 将表列数据类型从图像转换为 varbinary

sql - 事实与事实的关系

sql - 使用带有 CRLF 或 LF 的 SSIS 读取文本文件

xml - 如何在 SSIS 中编辑 WSDL (XML)

sql-server - 将数据库表从 SQL Server 2014 导出到 SQL Server 2008 R2

sql - 使用时间戳过滤/WHERE