2

我正在开发 Sql Server 2012。

我有 2 张桌子:

Create table tbl1 (formula varchar(50))

Insert into tbl1 values ('A-B')


Create table tbl2 (A float(53), B float(53))

Insert into tbl2 values (12.2466654, 11.7543289)

我试图将结果作为变量@result

Declare @result varchar(250);
Declare @a varchar(50);
Declare @b varchar(50);

Select @a = a from tbl2;
Select @b = b from tbl2;

Set @result = replace(tbl1, 'A', Cast(@A as float(53));
Set @result = replace(tbl1, 'B', Cast(@B as float(53));

当我从中选择时,@result我会得到类似12.2-11.8这样的东西,它几乎很好,但我正在失去精度。

也许您知道如何正确编写查询?

4

1 回答 1

6

您是否有理由不能使用 Decimal 而不是 float?浮点数可能会导致精度损失。

在转换为 VARCHAR() 时尝试使用 STR() 而不是 CAST()。这来自http://msdn.microsoft.com/en-us/library/ms173773.aspx上的 Converting float 和 read data

DECLARE @result varchar(250);

SELECT @result = STR( tbl2.A, 10,8) + '-' +  STR( tbl2.B, 10,8)
  FROM tbl2;

 PRINT @result;

这为我生成了字符串“12.2466654-11.7543289”。

于 2013-06-05T18:13:58.773 回答