select case isnumeric(OldData)
when 1 then convert(decimal(20,2),OldData)
--else OldData
end as OldData
from table
这条语句没有错,
但是
select case isnumeric(OldData)
when 1 then convert(decimal(20,2),OldData)
--else OldData
end as OldData
from table
执行时报错
服务器: 消息 8114,级别 16,状态 5,行 1
将数据类型 varchar 转换为 numeric 时出错。这是为什么?
补充OldData里面的数据既有varchar也有float,我的意思是如果是数字就转化为小数点后两位,如果不是,保留原值
when 1 then ltrim(convert(decimal(20,2),OldData))
else OldData
end as OldData
from table
比较简单的就是TONY哥的ltrim
其实用convert(varchar(20),convert(decimal(20,2),OldData))
或者cast(convert(decimal(20,2),OldData) as varchar(20))也是可以的
when 1 then LTRIM(convert(decimal(20,2),OldData) )
else OldData
end as OldData
from [table]
你的字段是NUMERIC的类型