将float值转换为string

时间:2014-07-18 15:02:24

标签: sql-server sql-server-2008-r2

我正在使用两个具有Date和float值的列,现在我需要将这两列合并为一个字符串。对于日期我可以将其转换为字符串。但是对于浮点值,它会将十进制值四舍五入,但情况并非如此。

例如我的浮点值是204.8,日期ID是2014-11-11。现在,当我作为字符串组合时,它应该导致为' 2014-11-11 204.8'但它正在向我展示' 2014-11-11 204'当我转换浮动值。我正在使用此查询,

DECLARE @myDateTime DATETIME
DECLARE @StandardCost INT
SET @myDateTime = '2011-12-24 00:00:00.000'
SET @StandardCost = 204.8
SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)+ ' ' + CAST(@StandardCost AS VARCHAR(MAX))

结果:2011-12-24 204

任何人都可以帮助我获得精确浮点值,小数点为字符串。

3 个答案:

答案 0 :(得分:5)

您已将@StandardCost定义为int。它不会保留小数部分。将其更改为numeric或其他一些支持小数位的数据类型。

答案 1 :(得分:0)

首先,您需要将其声明为FLOAT,而不是INT

然后,您可以尝试使用STR() function

DECLARE @StandardCost FLOAT
SET @StandardCost = 204.8
SELECT STR(@StandardCost,10,1)

答案 2 :(得分:-1)

正如@Sean Lange所说,将INT变量更改为FLOAT

DECLARE @myDateTime DATETIME
DECLARE @standardcost FLOAT;   -- <-------- Changed INT to FLOAT
SET @mydatetime = '2011-12-24 00:00:00.000';
SET @standardcost = 204.8;
SELECT LEFT(CONVERT(VARCHAR, @mydatetime, 111), 10) + ' ' + CAST(@standardcost AS VARCHAR(MAX));