选择然后使用子字符串解析并使用cast从计算中得到不同的结果

时间:2014-11-17 03:23:56

标签: sql-server parsing casting substring rounding

我解析了一个字符串,我使用子字符串来获取最后11个我认为的字符数。我完成了那个,但是当我使用cast和round时,它给出了与我手动计算不同的结果。

这是我的查询

SELECT round(cast(SUBSTRING('351856040520298,241111;1R,141117003059,A,1420.4629N,12058.7028E,0.0,77,0.9,20000006;2R,141117003059,11,98.3,12.58,04.10,282098820.9', 123,11)as float)/3600, 0, 1)

这给了我583的结果。但是当我尝试使用下面的计算手动计算时

282098820.9 / 3600

结果是

78360.7835

我的查询有问题吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

问题在于您的SUBSTRING。它只返回2098820.9而不是282098820.9。尝试使用RIGHT提取最后11个字符。

SELECT round(cast(right('351856040520298,241111;1R,141117003059,A,1420.4629N,12058.7028E,0.0,77,0.9,20000006;2R,141117003059,11,98.3,12.58,04.10,282098820.9', 11)as float)/3600, 0, 1)