在SQL中将NaN值转换为NULL或NaN为0

时间:2011-03-08 20:13:46

标签: sql-server

我在包含NaN值的注册表中有值(它们来自MATLAB)。我如何在SQL中将它们转换为NULL,或者最好是0?

3 个答案:

答案 0 :(得分:6)

如果已将它们导入SQL Server表

update tbl
set theColumn = NULL
WHERE theColumn = 'NaN'

如果它们是字符串'NaN',则将列值转换为NULL 对于包含'NaN'的列,它必须是varchar,所以如果你更喜欢0,那就是字符串'0'

update tbl
set theColumn = '0'
WHERE theColumn = 'NaN'

在select语句中,您可以使用

之一
SELECT NULLIF(theColumn, 'NaN') as NullifiedTheColumn, ...
SELECT CASE theColumn when 'NaN' then '0' else theColumn end as ZeroedTheColumn, ...

答案 1 :(得分:2)

CASE WHEN IsNumeric(column)=0 THEN 0 ELSE column怎么样?

答案 2 :(得分:2)

SELECT NULLIF('NaN', ColumnName)

例如

DECLARE @d VARCHAR(3) ='NaN'

SELECT NULLIF('NaN', @d)

为0

DECLARE @d VARCHAR(7) ='NaN'

SELECT CASE WHEN @d = 'NaN' THEN '0' ELSE @d END