LEFT为相同的值返回不同的结果

时间:2015-02-11 13:39:25

标签: sql sql-server

有人可以解释为什么LEFT的结果不同吗?为:

Declare @f as float
set @f = 40456510.

select LEFT(cast(@f as float), LEN(4045.)), LEFT(404565., LEN(4045.))

我得到了:

     |
------------ 
4.04 | 4045

是否存在导致此问题的默认演员表? Fiddle SQL

2 个答案:

答案 0 :(得分:3)

当您在LEFT(...)值上调用FLOAT时,您将其转换为数字的字符串表示形式,因为它是一个字符串函数。例如,如果您将值转换为varchar,那么您将看到输出结果:

SELECT CAST(CAST(@f as float) AS VARCHAR(100))

你得到:'4.04565e+007'

所以前4个字符是:'4.04'

答案 1 :(得分:0)

第一个是指数表示的左边4个字符。为什么我不知道。

您正在将字符串函数[Left()]应用于float变量。