2012-05-20 76 views
0

我想在SQL BDS和派生列我想要做如下使用派生列:如何構建SSIS表達式?

1)如果源列包含空值,然後用「未知」

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

我敢肯定,問題在於每一個逗號之間的替代,但我不知道還有什麼用。有什麼建議麼?

編輯:

好的,我解決了它。 Apperently你必須巢取代了他們這樣的工作:

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

什麼錯誤?我們不是通靈;) – MatBailie

+0

當然無效的表達錯誤:) – kyooryu

回答

1

我會建議不要使用靜態表達這樣。你的問題是,如果你有其他案例,你必須找到並修改日益複雜的表達式語句。

查找轉換的表格匹配源代碼和描述將是一個更好的解決方案。您可以設置查找忽略空,然後包括在派生列變換像下面這樣一個簡單的表達式:

ISNULL(Description)?"Unknown":Description 

這樣一來,如果你有新的源代碼,你可以將它們添加到查找表和不必更改任何代碼。