将表从nvarchar更改为包含值的浮点数

时间:2016-10-16 12:10:26

标签: sql-server sql-server-2008

嗨我想在我的表包含值

时将我的表从nvarchar改为float

我正在尝试这段代码:

alter table MY_TABLE alter column PRICE float
  

但我收到错误消息8114,级别16,状态5,行1错误转换   数据类型nvarchar to float。

3 个答案:

答案 0 :(得分:1)

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

所以,首先摆脱这个价值:

update my_table
    set price = try_convert(float, price);

然后转换将起作用:

alter table MY_TABLE alter column PRICE float;

我应该注意:float是“价格”列的错误数据类型。它应该是数字或金钱类型。

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

update my_table
    set price = NULL
    where isnumeric(price) = 0

答案 1 :(得分:1)

首先Update不良记录

Update MY_TABLE set PRICE = Replace(Replace(Price,',','.'),' ','')

然后运行alter

alter table MY_TABLE alter column PRICE float;

Insert到新表

Insert into table_name (Price,col1,..)
Select Replace(Replace(Price,',','.'),' ',''),col1,col2,..
From MY_TABLE 

FLOAT是一种近似数据类型,不会存储精确值

答案 2 :(得分:0)

查看无法转换的数据

Select * from MY_TABLE where IsNumeric(PRICE)=0

如果此数据可能被销毁或没有值,则在必要时进行编辑

Update MY_TABLE Set PRICE = null where IsNumeric(PRICE)=0
Alter table MY_TABLE alter column PRICE float