我无法转换为浮动。这是代码:
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。知道如何解决这个问题吗?
答案 0 :(得分:3)
因此,@usrate
具有未被识别为有效数字的字符。线路末端很可能会干扰转换。你可以试试:
select cast(left(@usrate, 6) as float)
顺便说一下,有一个论点是你应该转换为十进制而不是浮点数,以避免浮点精度问题。