我有一个旧数据库,其中有一个表,其中包含带有 NaN(非数字) 值的列( dataType REAL )。现在,如果我查询这些表,则会出现错误。所以为了更新这些,我尝试了以下查询:
UPDATE Table SET column = 0 WHERE IsNumeric(column)=0
但即使这个查询失败抛出错误
如果列的 数据类型是 varchar,那么我可以轻松更新。 但列是 REAL 所以我无法更新表。帮助我我真的被这个问题困了两天。
最佳答案
我得到了解决方案,通过将该列的值转换为字符串,然后我可以更新它。
UPDATE Table
SET Column = CASE
when charindex('NaN', UPPER(Column)) > 0 then 0
ELSE Column
END
在这里,我正在寻找 'NaN' 的字符索引,因为当我执行 CONVERT(varchar(1000), Column) 时,该列中的数据 NaN 变成了
-#@NaN
。所以我在转换为字符串后在该列中查找该值。希望这对其他人有帮助。
抱歉,我没有旧的服务器版本。我只有它的备份。
新服务器版本 :Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) 2010 年 4 月 2 日 15:53:02 版权所有 (c) Microsoft Corporation Enterprise Edition on Windows NT 6.1(Build 7601:Service Pack 1)
关于sql-server - 更新数据库中的 NaN 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9715915/