通过Delimeter拆分SSIS变量

时间:2015-07-31 08:32:27

标签: sql-server sql-server-2008 ssis

我有一个SSIS package (2008)来自给定文件夹的电子邮件。我正在将文件名从Foreach container传递到发送电子邮件任务。然后,我想将包含文件名的变量拆分为多个部分(使用分隔符“ - ”),以便在电子邮件主题行中使用。例如:

The file name is 123456-London-Jobrequirements.doc

电子邮件主题将为:

**Jobrequirements** document received for account **123456**, **London** Area.

我尝试使用带有SUBSTRINGFINDSTRING的表达式构建器进行拆分,但无法识别delimiter

任何帮助非常感谢。

1 个答案:

答案 0 :(得分:1)

免责声明:我希望我能安全地假设您的文件名几乎是这种格式:

<<String1>>-<<String2>>-<<String1>>.doc

正如您所说,您正在使用ForEachLoop容器来遍历文件名,因此我假设您有一个临时存储文件名的变量。让我们称之为@filename

以下是获取字符串的方法:

@String1 = SUBSTRING(@filename, 1, FINDSTRING(@filename, "-",1)-1)
@String2 = SUBSTRING(@filename, FINDSTRING(@filename, "-",1)+1, FINDSTRING(@filename, "-",1)-1)
@String3 = SUBSTRING(@filename, FINDSTRING(@filename, "-",2)+1, FINDSTRING(@filename, "-",1)-1)

然后,您可以将这些组合成另一个变量,例如@finalstring

然后使用表达式,您可以将字符串形成为:

@String3 + " document received for account " + @String1 + " , " + @String2 + " Area."

值得一提的是,微软在SSIS 2012中引入了一个非常有用的关键词TOKEN。毋庸置疑,它会使表达更加清晰。

@String1 = TOKEN(@filename, "-", 1)
@String2 = TOKEN(@filename, "-", 2)
@String3 = TOKEN(@filename, "-", 3)

MSDN link on TOKEN

添加变量:

enter image description here