I am using SSIS to move excel data to a temp sql server table and from there to the target table. So my temp table consists of only varchar columns - my target table expects money values for some columns. In my temp table the original excel columns have a formula but leave an <strong>empty cell</strong> on some rows which is represented by the temp table with an empty cell as well. But when I cast one of these columns to money these originally blank cells become <strong>0,00</strong> in the target column.
Of course that is not what I want, so how can I get <strong>NULL</strong> values in there? Keeping in mind that it is possible that a wanted 0,00 shows up in one of these columns.
I guess I would need to edit my temp table to turn the empty cells to NULL. Can I do this from within a SSIS package or is there a setting for the table I could use?
For existing data you can write a simple script that updates data to NULL where empty.
UPDATE YourTable SET Column = NULL WHERE Column = ''
For inserts you can use <a href="http://msdn.microsoft.com/en-us/library/ms177562.aspx" rel="nofollow">NULLIF</a> function to insert nulls if empty
INSERT INTO YourTable (yourColumn) SELECT NULLIF(sourceColum, '') FROM SourceTable
Edit: for multiple column updates you need to combine the two solutions and write something like:
UPDATE YourTable SET Column1 = NULLIF(Column1, '') , Column2 = NULLIF(Column2, '') WHERE Column1 = '' OR Column2 = ''
That will update all