从varchar转换为float SqlServer

时间:2014-06-11 12:29:58

标签: sql sql-server tsql casting

我有varchar格式的专栏,我想将其转换为float。值如下:

188234,62
188235
188235,43
188235,88

所以,当我尝试转换它时,我收到一个错误:

Error converting data type varchar to float.

我认为可能某些字段不是数字,我使用isnumeric()函数检查,根据查询我得出的结论是所有值都是数字。然后我尝试了不同的查询来转换字段类型:

查询1:

SELECT CarData.dbo.FinalData_OilLevel_new_send.KM 
CASE WHEN ISNUMERIC(CarData.dbo.FinalData_OilLevel_new_send.KM) = 1
THEN CAST(CarData.dbo.FinalData_OilLevel_new_send.KM AS FLOAT) 
ELSE NULL 
END
FROM CarData.dbo.FinalData_OilLevel_new_send

QUERY2:

SELECT CASE ISNUMERIC(KM) WHEN 1 THEN CONVERT(float, KM)) ELSE null END from CarData.dbo.FinalData_OilLevel_new_send

但是我总是得到同样的错误。还有其他方法可以将varchar转换为float吗?

2 个答案:

答案 0 :(得分:3)

您必须使用点作为小数点分隔符:

CAST(REPLACE(CarData.dbo.FinalData_OilLevel_new_send.KM,',','.') AS FLOAT)

答案 1 :(得分:0)

首先,您需要Replace

,现在

试试这个!

select cast(replace(val,',','') as float) from table

SEE DEMO