2
我正在SQL Server上的原有精度2012我从浮点数转换为varchar
我有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
的东西,所以它几乎是好的,但我失去了精度。
也许你有一个想法如何正确地编写查询?
Wel我想在这种情况下,我可以用十进制格式的列创建中间表并从那里导入tbl2中的所有数据。然后使用新表 – Almazini
中的数据处理您是否正在查找tbl1中的值为0.4923365或字符串'12 .2466654-11.7543289'。如果它只是字符串,那么使用STR()应该可以解决问题[STR(tbl2.A,10,8)+' - '+ STR(tbl2.B,10,8)]。如果您希望获得0.4923365,则需要考虑float数据类型的精度损失。为了演示精度的不足,当我[CAST(12.2466654 as float) - CAST(11.7543289 as float)]时,我在SQL Server 2012实例上返回0.492336499999999。 –
我需要将它表示为一个字符串!明天将尝试Str()!感谢您的帮助 – Almazini