从'nvarchar(255)'转换列'S4'可能会丢失SQL警告数据

时间:2014-06-13 11:03:03

标签: sql-server

我在将数据nvarchar转换为float时遇到警告信息?

  

' Table2014'表    - 警告:数据可能会丢失,转换列' S4'来自' nvarchar(255)'。    - 保存定义对包含大量数据的表进行更改可能需要相当长的时间。在保存变更的同时   表格数据将无法访问。

这是什么意思,它会从列中删除一些数据吗?

2 个答案:

答案 0 :(得分:2)

因为当前列是nvarchar,所以当前记录(字符串)很可能不代表有效的浮点数。

因此,当您更改表数据类型时,这些条目将无法正确转换(只有float的有效nvarchar reprasantions将被转换)

编辑: 听起来有点特别的是让这种数据类型改变。 (一般情况下,您将丢失数据)。

如果您想要更安全,请尝试:

ALTER TABLE mytable ADD new_column float

update mytable
set new_column = convert(float, S4)

如果满意的话:

ALTER TABLE mytable DROP COLUMN S4

答案 1 :(得分:0)

根据我的理解,警告说当转换发生时,如果使用数据库的任何人尝试更新信息,则不会保存,因为无法读取/写入数据直到转换完成。

话虽如此,虽然在这种情况下我不确定float的大小,如果它小一些/设置为小于255个字符,你可能会遇到截断数据,所以这需要仔细检查。

编辑: apomene提出了一个好点:如果任何数据不是有效的浮点数,它不会转换,因此会丢失。