非常确定答案是在实地,但我无法看到它..代码:
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
答案 0 :(得分:0)
这是因为在为implicit casting
构建字符串时float
从varchar
到dynamic 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