如何构建SSIS表达式?

时间:2012-05-20 15:19:49

标签: sql-server ssis

我想在SQL BDS和派生列中使用派生列,我想按如下方式进行:

1)如果source列包含NULL,则将其替换为“Unknown”

2)如果有值,则用给定的字符串替换它。

到目前为止,我提出了这个问题,但我对这些表达式的语法不熟悉,并且一直遇到错误:

ISNULL(Source) ? "Unknown" :  REPLACE("m", "m", "Pop memories" ), REPLACE("h", "h", "Pop     hits" ), REPLACE("a", "a", "Pop annual" ), REPLACE("y", "y", "Yearbook" ), REPLACE("bs", "bs", "Bestsellers" ) 

我很确定问题在于每个替换之间的逗号,但我不知道还有什么用。有什么建议吗?

编辑:

好的,我解决了。看起来你必须嵌套替换它们才能像这样工作:

ISNULL(Source) ? "Unknown" :  REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Source, "bs", "Bestsellers" ), "m", "Pop memories" ), "h", "Pop     hits" ) , "a", "Pop annual" ), "y", "Yearbook" )

1 个答案:

答案 0 :(得分:1)

我建议不要使用这样的静态表达式。您的问题是,如果您有其他情况,则必须查找并修改日益复杂的表达式语句。

使用与源代码和描述匹配的表的查找转换在这里将是更好的解决方案。您可以将查找设置为忽略空值,然后在派生列转换中包含一个简单表达式,如下所示:

ISNULL(Description)?"Unknown":Description

这样,如果你有新的源代码,你可以将它们添加到查找表中,而不必更改任何代码。