我有一个SSIS package (2008)
来自给定文件夹的电子邮件。我正在将文件名从Foreach container
传递到发送电子邮件任务。然后,我想将包含文件名的变量拆分为多个部分(使用分隔符“ - ”),以便在电子邮件主题行中使用。例如:
The file name is 123456-London-Jobrequirements.doc
电子邮件主题将为:
**Jobrequirements** document received for account **123456**, **London** Area.
我尝试使用带有SUBSTRING
和FINDSTRING
的表达式构建器进行拆分,但无法识别delimiter
。
任何帮助非常感谢。
答案 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)
添加变量: