嗨我想在我的表包含值
时将我的表从nvarchar改为float我正在尝试这段代码:
alter table MY_TABLE alter column PRICE float
但我收到错误消息8114,级别16,状态5,行1错误转换 数据类型nvarchar to float。
答案 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