将表从 nvarchar 更改为包含值的 float

use*_*546 0 sql-server sql-server-2008

您好,当我的表包含值时,我想将表从 nvarchar 更改为 float

我正在尝试这段代码:

alter table MY_TABLE alter column PRICE float
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息 8114,级别 16,状态 5,第 1 行将数据类型 nvarchar 转换为浮点数时出错。

Gor*_*off 5

您遇到了问题,因为某些值无法转换为浮点数。

因此,首先删除该值:

update my_table
    set price = try_convert(float, price);
Run Code Online (Sandbox Code Playgroud)

然后转换就会起作用:

alter table MY_TABLE alter column PRICE float;
Run Code Online (Sandbox Code Playgroud)

我应该注意: float对于“价格”列来说是一个错误的数据类型。它实际上应该是数字或货币类型。

在 SQL Server 2008 中,请isnumeric()改用:

update my_table
    set price = NULL
    where isnumeric(price) = 0
Run Code Online (Sandbox Code Playgroud)