0

我想在 SQL BDS 中使用派生列,并在派生列中执行以下操作:

1) 如果源列包含 NULL,则将其替换为“未知”

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" ) 

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

编辑:

好的,我解决了。显然你必须嵌套 REPLACES 才能让它们像这样工作:

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

1 回答 1

1

我建议不要使用这样的静态表达式。你的问题是,如果你有额外的情况,你必须找到并修改一个越来越复杂的表达式语句。

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

ISNULL(Description)?"Unknown":Description

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

于 2012-05-21T14:59:55.120 回答