“从单行文件导入转换数据类型varchar到float时出错”

时间:2016-05-04 13:38:22

标签: sql sql-server

我无法转换为浮动。这是代码:

DECLARE @USRATE as varchar(10);

SELECT @USRATE = BulkColumn
FROM OPENROWSET(BULK 'file.txt', SINGLE_NCLOB) rate_from_file;

PRINT @USRATE;
PRINT CAST(@USRATE AS float);
PRINT CONVERT(FLOAT, @USRATE);

txt文件只是一个十进制值(即0.8000后跟回车符),但上述两个命令都返回:

0.7883
Msg 8114, Level 16, State 5, Line 9
Error converting data type varchar to float.

因此CAST和CONVERT都不起作用。我也尝试使用相同的输出转换为DECIMAL。知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

因此,@usrate具有未被识别为有效数字的字符。线路末端很可能会干扰转换。你可以试试:

select cast(left(@usrate, 6) as float)

顺便说一下,有一个论点是你应该转换为十进制而不是浮点数,以避免浮点精度问题。