表达式查找某些字符并将其存储在SSIS变量中

时间:2014-04-21 12:03:07

标签: tsql variables ssis expression

在SSIS 2008中,我有一个名为@[User::EANcode]的变量。它包含一个带有产品eancode的字符串,如'1234567891123'。该值通过foreach循环从'1234567891123.jpg'等文件名派生。

但是,有时文件名在末尾包含额外的'_1','_ 2'等,如'1234567891123_1.jpg',导致EANcode变量中的值为'1234567891123_1'。

当同一个EANcode(产品)有多个图像时会发生这种情况。 _N添加始终是一个数字,它始终位于名称/字符串的末尾。

查找/ cath'_1'(或_2或_N等)的表达式是什么,因此您可以将其存储在另一个名为@[User::Addition]的变量中?

如果没有添加,变量保持为空,这很好。

我需要将这个_N添加到一个单独的变量中的原因是我后来需要它重命名文件名但是在最后粘贴添加。

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找CHARINDEX()SUBSTRING()一起使用。有了这个,你可以将_#拆分成另一个这样的变量(copy / pasta和execute to see。使用@ temp1变量来查看代码的局限性):

declare @temp1 varchar(20), @temp2 varchar(20)
set @temp1 = '1234567891123_12'

IF CHARINDEX('_', @temp1) > 1
set @temp2 = SUBSTRING(@temp1,CHARINDEX('_', @temp1),LEN(@temp1)-CHARINDEX('_',@temp1)+1)

select @temp1, @temp2

希望它有所帮助!