SQL查询结果问题

时间:2010-09-29 12:08:29

标签: sql-server sql-server-2005 casting

我有两个SQL Query Both返回

  

选择round(convert(float,'24367.723'),2)

     

结果:24367.72

第二

  

选择转换(varchar(20),round(转换(float,'24367.723'),2))

     
    

结果:24367.7

  

为什么第二个查询返回会在转换为varchar

后排除最后一个数字

先谢谢

3 个答案:

答案 0 :(得分:3)

如果没有为convert函数指定样式参数,则会得到默认样式(0)。

即。它相当于做

select convert(varchar(20),round(convert(float,'24367.723'),2), 0)      

default style for converting from float to varchar最多显示6位数。

答案 1 :(得分:0)

当使用浮点数时,STR()函数通常会根据MSDN提供更好的结果,因为您可以更好地控制它。

E.g。

select str(convert(float,'24367.723'),8, 2)

答案 2 :(得分:0)

不要使用花车,请使用精确的数字。像这样的东西

   convert(varchar(20), convert(numeric(20,2), '24367.72'))