2012-09-07 102 views
3

我正在使用SSIS將excel數據移動到臨時sql服務器表並從那裏到目標表。 所以我的臨時表只包含varchar列 - 我的目標表需要某些列的貨幣值。在我的臨時表中,原始excel列有一個公式,但在某些行上留下了空單元格,這些行由temp表格和空單元格表示。但是當我將其中一列投入金錢時,這些原本空白的單元格在目標列中變爲0,00SQL-Server用NULL值替換空單元格

當然,這不是我想要的,所以我怎樣才能得到NULL值?請記住,在其中一列中可能出現想要的0,00。

我想我需要編輯我的臨時表來將空單元格變爲NULL。我可以在SSIS包內執行此操作,還是可以使用我可以使用的表的設置?

謝謝。

回答

8

對於現有數據,您可以編寫一個簡單的腳本,將數據更新爲NULL,其中爲空。

UPDATE YourTable SET Column = NULL WHERE Column = '' 

對於插入您可以使用NULLIF功能插入空當空

INSERT INTO YourTable (yourColumn) 
SELECT NULLIF(sourceColum, '') FROM SourceTable 

編輯:對於多列的更新需要這兩個解決方案相結合,編寫如下:

UPDATE YourTable SET 
Column1 = NULLIF(Column1, '') 
, Column2 = NULLIF(Column2, '') 
WHERE Column1 = '' OR Column2 = '' 

這將更新所有

+0

謝謝Fedor這對我來說。還有一個問題:UPDATE語句的兩個或多個列的語法是什麼? – TonyC

+0

UPDATE YourTable SET Colum1 = value,Column2 = value2 etc –

+0

UPDATE YourTable SET Column1 = NULL WHERE Column1 ='',Column2 = NULL WHERE Column2 ='' 錯誤的語法在',' – TonyC