按分隔符拆分 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.
我尝试使用 SUBSTRING
和 FINDSTRING
的表达式生成器进行拆分,但无法识别 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)
添加变量:
我有一个 SSIS package (2008)
可以通过电子邮件发送给定文件夹中的文件。我将 Foreach container
中的文件名传递给发送电子邮件任务。然后,我想将包含文件名的变量拆分为多个部分(使用定界符“-”),以便在电子邮件主题行中使用。例如:
The file name is 123456-London-Jobrequirements.doc
电子邮件主题为:
**Jobrequirements** document received for account **123456**, **London** Area.
我尝试使用 SUBSTRING
和 FINDSTRING
的表达式生成器进行拆分,但无法识别 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)
添加变量: