按分隔符拆分 SSIS 变量

Splitting SSIS Variable by Delimeter

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

The file name is 123456-London-Jobrequirements.doc

电子邮件主题为:

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

我尝试使用 SUBSTRINGFINDSTRING 的表达式生成器进行拆分,但无法识别 delimiter

非常感谢任何帮助。

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

<<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

添加变量: