我有下面的 T-SQL 查询行,我正在尝试将其转换为 Visual Studio SSIS 表达式到派生列任务。
So tableA
刚刚[Work item /Submission no#]
列,但我需要将它们分成两列,例如SubmissionCommon
and SubmissionNumber
当执行以下情况时,在表B中。
CASE
WHEN ISNUMERIC(SUBSTRING([Work item /Submission no#], 4, 2)) = 1
THEN LEFT([Work item /Submission no#], 15)
ELSE LEFT([Work item /Submission no#], 16)
END AS SubmissionCommon,
[Work item /Submission no#] AS SubmissionNumber
Solution
我建议您首先添加派生列(你可以命名它IsNumeric
),用以下表达式:
(DT_NUMERIC, 18, 2)SUBSTRING([Work item /Submission no#], 4, 2) == (DT_NUMERIC, 18, 2)SUBSTRING([Work item /Submission no#], 4, 2) ? 1 : 0
然后在“派生列转换编辑器”窗口底部附近,单击“配置错误输出”。您需要告诉 SSIS忽略错误失败
添加另一个派生列,使用以下表达式连接到第一个列
REPLACENULL([IsNumeric],0) == 1 ? LEFT([Work item /Submission no#], 15) : LEFT([Work item /Submission no#], 16)
因为第一个可能会抛出错误
详细信息请关注这篇文章:
- http://bidn.com/blogs/DustinRyan/ssis/915/check-isnumeric-with-衍生-column-transform-in-ssis-package http://bidn.com/blogs/DustinRyan/ssis/915/check-isnumeric-with-derived-column-transform-in-ssis-package
更新 1 - 屏幕截图
根据您的评论,我将提供一些屏幕截图
数据流概述
第一个导出列
第一导出列错误输出配置
第二导出列
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)