I had no primary key on the table and no guarantee of uniqueness on any given row. Because I was using the NaN column as part of the where clause, I would get an overflow.
In order to null the values, I first had to create a unique column (identity)
-- add idenity column
Alter Table dbo.TABLE
Add UniqueID Int Identity(1, 1)
Go
Now I can take the raw data converted into NVarChar as well as the IsNumeric value and put it into a temporary table.
-- select data into temp table
SELECT
convert(nvarchar (20), column1) as column1
,convert(nvarchar (20), column2) as column2
,convert(nvarchar (20), column3) as column3
,isnumeric(column1) as col1_Numeric
,isnumeric(column2) as col2_Numeric
,isnumeric(column3) as col3_Numeric
,[UniqueID]
INTO [TEMPORARYTABLE]
FROM
order by col1_Numeric asc
I can update the original table by identity column and NULL the NaN values .
--null the NaN data in Column1
Update A
set A.Column1 = null
From TABLE A, TEMPORARYTABLE B
Where A.UniqueID=B.UniqueID
And B.col1_Numeric=0
--null the NAN data in Column2
Update A
set A.Column2 = null
From TABLE A, TEMPORARYTABLE B
Where A.UniqueID=B.UniqueID
And B.col2_Numeric=0
And clean up
--drop identity column
Alter Table TABLE
Drop Column UniqueID