7

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

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

我想过使用顺序派生列转换,或创建一个临时查找表,但这似乎比它真正应该的要复杂得多。

谢谢。

4

3 回答 3

15

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

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

于 2009-11-06T12:45:45.727 回答
5

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

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

于 2012-04-18T08:54:50.813 回答
4

简单地将您的 ?: 语句构建为堆叠

@[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] 
于 2015-06-26T18:36:07.560 回答