我在下面的T-SQL查询行中尝试将其转换为Visual Studio SSIS表达式并转换为派生列任务。
所以tableA刚刚[Work item /Submission no#]列,但我需要他们像分成两列SubmissionCommon,并SubmissionNumber在下面情况时执行TableB中。
tableA
[Work item /Submission no#]
SubmissionCommon
SubmissionNumber
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
我建议您首先添加一个派生列 (可以命名为IsNumeric),并使用以下表达式:
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)
因为第一个可能会引发错误
有关详细信息,请遵循本文: