我在包含NaN值的注册表中有值(它们来自MATLAB)。我如何在SQL中将它们转换为NULL,或者最好是0?
答案 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