【发布时间】:2020-06-03 19:20:08
【问题描述】:
使用 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)
但它不起作用,它一直说单引号不是预期的。我也试过双引号无济于事。
【问题讨论】:
-
我没有方便的 SSDT 安装来测试这个,但是 SSIS 表达式中的反斜杠通常需要用反斜杠进行转义,当然,反斜杠。所以您可能使用
FINDSTRING('\\'...到达某个地方。无论如何,值得一试。 -
@EricBrandt 它接受了这一点,但随后包失败:[Derived Column [2]] 错误:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “派生列”失败,因为发生错误代码 0xC0049067
-
新错误是进步!不过,我出去了,缺少一个可以玩的编辑器。
-
哈哈——我想我会在导入任务之后恢复到 SQL 更新。只是试图将其全部包含在 DFT 中
-
@EricBrandt 最简单的解决方案是使用
TOKEN()和TOKENCOUNT()。因为它们是为解决类似情况而开发的。
标签: sql-server ssis sql-server-2014 etl derived-column