需要 SSIS Expression 帮助在文件名中查找关键字
Need SSIS Expression help for find keyword in filename
我需要以下场景的帮助。
我有这样的文件名
abc_assessment_20200303121212.csv
fgcdv_assessment_20200303121212.csv
xycv_assessment_20200303121212.csv
现在我需要在 SSIS 包中正确表达以识别包含“assessemnt”作为关键字的文件。
我使用了下面的表达式,但没有用
substring( @[User::FileName],1, FINDSTRING( @[User::FileName],"_",2)-1)=="assessment"
SSIS 表达式语言没有调试功能。因此,当您第一次没有正确地写出一个复杂的表达式时,这表明您一步做的太多了。
让我们分解一下你的表情。
查找字符串
在最里面的操作中,您正在使用 findstring 查找第二个下划线的位置
FINDSTRING( @[User::FileName] ,"_",2)
如果 FileName 是 xycv_assessment_20200303121212.csv,则将产生值 16。
我怎么知道的?我创建了一个名为 SecondUnderscore 的变量,它只是 Findstring 操作。
子字符串
在此基础上,我创建了第二个名为 SubString 的变量,它使用了 SecondUnderscore 变量
substring( @[User::FileName],1, @[User::SecondUnderscore] -1)
我很清楚我的值是“xycv_assessment”
布尔检查
此操作将 SubString 的结果与我评估的标记值进行比较。
@[User::SubString] == "assessment"
它仍然会产生错误,因为 xycv_assessment 显然与评估不同。
最后的想法
字符串比较区分大小写,因此请注意 Assessment 与 assessmentT 等不匹配。Lower() 表达式将有助于避免这种情况
如果您需要找到 xycv 与 asessment 与日期字符串的片段,请继续这条路线,但找到第一个下划线的位置并将片段切出。
否则,以@Tyron78 为例,只检查是否存在字符串评估。如果 findstring 大于零,它在文件名中。
我需要以下场景的帮助。
我有这样的文件名
abc_assessment_20200303121212.csv
fgcdv_assessment_20200303121212.csv
xycv_assessment_20200303121212.csv
现在我需要在 SSIS 包中正确表达以识别包含“assessemnt”作为关键字的文件。
我使用了下面的表达式,但没有用
substring( @[User::FileName],1, FINDSTRING( @[User::FileName],"_",2)-1)=="assessment"
SSIS 表达式语言没有调试功能。因此,当您第一次没有正确地写出一个复杂的表达式时,这表明您一步做的太多了。
让我们分解一下你的表情。
查找字符串
在最里面的操作中,您正在使用 findstring 查找第二个下划线的位置
FINDSTRING( @[User::FileName] ,"_",2)
如果 FileName 是 xycv_assessment_20200303121212.csv,则将产生值 16。
我怎么知道的?我创建了一个名为 SecondUnderscore 的变量,它只是 Findstring 操作。
子字符串
在此基础上,我创建了第二个名为 SubString 的变量,它使用了 SecondUnderscore 变量
substring( @[User::FileName],1, @[User::SecondUnderscore] -1)
我很清楚我的值是“xycv_assessment”
布尔检查
此操作将 SubString 的结果与我评估的标记值进行比较。
@[User::SubString] == "assessment"
它仍然会产生错误,因为 xycv_assessment 显然与评估不同。
最后的想法
字符串比较区分大小写,因此请注意 Assessment 与 assessmentT 等不匹配。Lower() 表达式将有助于避免这种情况
如果您需要找到 xycv 与 asessment 与日期字符串的片段,请继续这条路线,但找到第一个下划线的位置并将片段切出。
否则,以@Tyron78 为例,只检查是否存在字符串评估。如果 findstring 大于零,它在文件名中。