如何将SQL Case语句转换为SSIS表达式语言?

时间:2017-10-03 09:45:17

标签: sql-server ssis expression ssis-2012 derived-column

我在SSIS加载中有一个完全符合文件名(带路径的文件名)进入临时表。文件名是例如。

C:\SSIS\scripts\work\input\tom_22082017-093346-906838.csv
C:\SSIS\scripts\work\input\jim_22082017-093346-906838.csv

我想从中提取文件名,并在SSIS派生列转换中使用案例逻辑生成新列。使用纯SQL我可以这样做:

SELECT CASE 
        WHEN SUBSTRING(UPPER(RIGHT(filename, CHARINDEX('\', REVERSE(filename)) - 1)), 1, 3) = 'TOM' THEN 'TOMMY' 
        WHEN SUBSTRING(UPPER(RIGHT(filename, CHARINDEX('\', REVERSE(filename)) - 1)), 1, 3) = 'JIM' THEN 'JIMMY' 
    END AS PERSON
    FROM mystagingtable

如何在派生列转换中将此逻辑转换为SSIS表达式语言?

2 个答案:

答案 0 :(得分:1)

在SSIS表达式中,您可以使用嵌套的三元运算符。

{Condition} ? {Return value when true} : {Return value when false}

答案 1 :(得分:0)

第1步: 使用DerivedColumn创建一个新列,其中包含文件名中的3char名称(tom,jim等)。您正在使用的SQL函数(substring,upper etc)在SSIS脚本编辑器中具有相同的功能。

第2步: 使用另一个DerivedColumn生成一个新列,将上面的列(tom,jim等)转换为全名(tommy,jimmy)。使用三元运算符(参见下面的Tab Alleman答案)。