2012-09-07 57 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