如何编写SSIS开关/ case表达式?

时间:2009-11-06 08:19:48

标签: ssis switch-statement case

这是一个SQL Server Integration Services(SSIS)表达式问题(我对它很新)。

我想在派生列转换中编写一个switch / case表达式 - 基本上,新列可以根据输入列的值有5个不同的可能值。我从谷歌得到的只是(条件)? (真值):(假值)技术,但这仅提供两个可能的值。 SSIS表达式是否具有开关/案例类型表达式?

我想过使用顺序派生列转换,或者创建一个临时查找表,但这看起来确实应该更加复杂。

感谢。

3 个答案:

答案 0 :(得分:15)

我使用了if-elseif-else语句的等价来解决问题,如下所示:

(条件1)? (真值1):(条件2)? (真值2):(假值)

答案 1 :(得分:4)

尽管从技术上讲,avesse的答案是有效的,但编写/维护表达并不是最有趣的任务。

为避免在派生列转换中编写复杂表达式,我建议使用脚本转换。这样做可以让您使用.NET代码编写switch语句,编写和维护更好。你的同事会很感激!

答案 2 :(得分:3)

只需将您的?:语句组织为堆叠

@[User::SomeVariable] == 2 ? "SomeVariable is 2"
:
@[User::SomeVariable] == 3 ? "SomeVariable is 3"
:
@[User::SomeVariable] == 4 ? "SomeVariable is 4" 
:
"SomeVariable is not 2,3,4 is actually" + @[User::SomeVariable]