2012-10-24 38 views

回答

16

您可能還需要進行檢查,保持空的選項源和目的地連接(如果有)

+3

這不是重點!Point是如何處理或替換NULL值。我試過了你的建議,但它不起作用。應該有表達式用空值或用戶定義的值替換空值。 –

+1

好吧,我想你是對的。如果這是一個Flat文件,則平面文件源上有一個選項可保留空值。啓用此功能以及目標連接(如OLEDB)上的「保留NULL值」選項可能不需要使用派生列轉換來替換它。 – Thony

+0

嗯!那麼我有Excel作爲來源。 Excel包含一些空單元格,當我在DB中加載它們時,它會給出NULL。我試圖使用表達式(條件分割),但它不起作用。我會盡快粘貼我的錯誤。 –

6

你有沒有嘗試過類似的信息(假設下的數據類型爲字符串/爲varchar):

LEN(TRIM([ColumnName]))==0 ? NULL(DT_WSTR, 10) : [ColumnName] 
+0

我已經試過,但它不是字符串,這是迄今爲止,我們不能使用LTRIM日期...... :( –

+0

然後取下裝飾.....直接使用LEN函數 –

35

在數據流使用DerivedColumn組件。

更換色譜柱和表達,就把這行代碼

ColumnName == "" ? NULL(DT_WSTR,50) : ColumnName

這將確保返回null如果列爲空

+0

我們可以使用這個表達式而沒有派生列嗎? –

+0

我們可以在一行中多次替換同一列而不使用另一個DerivedColumn或更復雜的公式嗎? – Hybris95

1

我有一個類似的實例,其中我想在一個日期列設置爲NULL替換字符串,我用下面的代碼中的值:

LEN(your_data)< 2? NULL(DT_WSTR,50):your_data

在這種情況下,字符串的長度僅爲1.然後我使用數據轉換轉換將其轉換爲dt_dbtimestamp類型。

希望有幫助!

1

修復了上述問題:::::

源和目標必須與選項勾選允許空值,它會工作。

+0

在我的情況下,我使用的是平面文件源,左邊的'連接管理器'下的選項是一個複選框'將來自源的空值保留爲數據流中的空值' – PeterVermont

0

您應該使用Derived Column組件和一個條件表達式。由於這是一個條件語句,因此數據類型需要與創建布爾結果相同。

嘗試使用這樣的:

ColumnName == (DT_DATE)"" ? NULL(DT_DATE) : ColumnName