我正在使用Sql Server 2012。
我有两张桌子:
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
这样的东西,所以它几乎是好的,但我正在失去精确度。
也许你知道如何正确编写查询?
答案 0 :(得分:6)
有没有理由你不能使用Decimal而不是float?浮动有可能导致精度损失。
转换为VARCHAR()时,请尝试使用STR()而不是CAST()。这来自转换浮点数并读取http://msdn.microsoft.com/en-us/library/ms173773.aspx
上的数据DECLARE @result varchar(250);
SELECT @result = STR( tbl2.A, 10,8) + '-' + STR( tbl2.B, 10,8)
FROM tbl2;
PRINT @result;
这导致了我的字符串“12.2466654-11.7543289”。