SQL exec'轮次?'浮动值

时间:2015-04-14 15:28:55

标签: sql dynamic exec rounding

非常确定答案是在实地,但我无法看到它..代码:

DECLARE @f float = 894589.4;
SELECT @f;
EXEC ('SELECT '+@f)
  

894589.4   的 894589

为什么呢?不仅如此:

DECLARE @f float = 1.4;
  

1.4 1.4

但真正令我困惑的是 - 这一个

 DECLARE @f float = 1234567.4;
  

1234567.4 1234570

2 个答案:

答案 0 :(得分:0)

这是因为在为implicit casting构建字符串时floatvarchardynamic sql。{/ p>

使用STR()功能:

declare @f float=894589.4
declare @sql varchar(100)='select ' + str(@f,10,2)
exec (@sql)

输出:

894589.4

答案 1 :(得分:-1)

DECLARE @f float = 894589.4;
declare @query nvarchar(4000)
SELECT @f;
set @query= 'SELECT @f' 


EXEC sp_executesql @query, N'@f float', @f

无论我的答案被某人降级,我认为是使用EXEC作为参数提交的正确方法

怎么样?      DECLARE @f float = 894589.44567;

我们将改变我们的SP可以处理浮点数到4位+ str(@ f,10,4)?

回答更多:因为正在转换为INT