Alm*_*ini 2 sql-server variables precision varchar
我正在使用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)
Run Code Online (Sandbox Code Playgroud)
我试图将结果变为变量@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));
Run Code Online (Sandbox Code Playgroud)
当我选择从中@result得到类似的东西时12.2-11.8,它几乎是好的,但我正在失去精确度.
也许你知道如何正确编写查询?
有没有理由你不能使用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;
Run Code Online (Sandbox Code Playgroud)
这导致我的字符串"12.2466654-11.7543289".