【问题标题】:SQL Warning Data might be lost converting column 'S4' from 'nvarchar(255)'SQL 警告数据可能会丢失从 'nvarchar(255)' 转换列 'S4'
【发布时间】:2014-06-13 11:03:02
【问题描述】:

我在将数据 nvarchar 转换为浮点数时收到以下警告消息?

'Table2014' 表 - 警告:从 'nvarchar(255)' 转换列 'S4' 的数据可能会丢失。 - 保存对具有大量数据的表的定义更改可能需要相当长的时间。在保存更改时, 表数据将无法访问。

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

【问题讨论】:

  • nvarchar 浮动?肯定需要转换,这可能会丢失数据。

标签: sql-server


【解决方案1】:

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

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

编辑: 对我来说,改变这种数据类型听起来很奇怪。 (是的,一般情况下您会丢失数据)。

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

ALTER TABLE mytable ADD new_column float

update mytable
set new_column = convert(float, S4)

如果满意的话:

ALTER TABLE mytable DROP COLUMN S4

【讨论】:

  • 会不会丢失特定列的数据?
【解决方案2】:

据我了解,警告是说在转换过程中,如果任何使用数据库的人尝试更新信息,则不应保存,因为数据无法读取/写入直到转换完成。

话虽如此,尽管在这种情况下我不确定浮点数的大小,但如果它小于/设置为小于 255 个字符,您可能会遇到数据截断,所以这将是好东西要仔细检查。

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

【讨论】:

    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多