2013-07-01 59 views
0

考慮在派生列轉換下面的語句:SSIS基本數據轉換功能

派生列名稱:

EFFECTIVE_DATE 

表達:

TRIM([EFFECTIVE DATE]) == "" ? (DT_WSTR,255)NULL(DT_WSTR,255) : [EFFECTIVE DATE] 

我看這是:

「如果有效日期的微調是空字符串然後分配EFFECTIVE_DATE NULL轉換爲U形長度爲255 Otherise的nicode字符串,指定生效日期的當前值「

我認爲這是什麼代碼做什麼,但我感到困惑下面的語法:

(DT_WSTR,255)NULL(DT_WSTR,255) 

我只有預期:

(DT_WSTR,255)NULL 

我認爲領先的(DT_WSTR,255)是緊跟在後面的值的轉換,NULL值。爲什麼後面會有另一個(DT_WSTR,255)。我錯過了什麼?

回答

1

即表達,本身,看起來有點冗餘,如:

NULL(DT_WSTR,255) 

...是指 「生成具有長度255型DT_WSTR的NULL值」。

所以它看起來像:

(DT_WSTR,255)NULL(DT_WSTR,255) 

...意爲 「鑄鉛字DT_WSTR的NULL值,長度255,長度255鍵入DT_WSTR」。

所以therefores似乎面值彷彿類型轉換實際上什麼也不做。但是,如果你離開它,你可能會碰到一個問題as described here,這是,你會在運行時遇到此錯誤:

對於條件運算符的操作數,數據類型DT_STR僅支持輸入專欄和演員操作。表述 「FINDSTRING([字符串-COL],」 「1)== 0 [字符串-COL]:NULL(DT_STR,255,1252)」 具有DT_STR操作數不是輸入列或的結果強制轉換,並且不能與條件操作一起使用。要執行此操作,操作數需要使用cast操作符顯式轉換。

這似乎是一個奇怪的任意限制,但它的存在,所以你需要投。