如何让 SQL Server FOR XML 有效地格式化浮点数

Bry*_*yan 2 sql-server for-xml

float当我使用 FOR XML从 SQL 数据库获取类型值时,它会将它们格式化为科学格式,如下所示:

<foo bar="0.00000000e+000"/>
Run Code Online (Sandbox Code Playgroud)

我更喜欢它说“0”。

我怎样才能说服它这样做呢?

Ric*_*iwi 5

CAST是你的朋友

declare @t table (bar float);    insert @t values (0);
select bar from @t for xml path('foo');

------------------------------------------------
| <foo><bar>0.000000000000000e+000</bar></foo> |


declare @t table (bar float);    insert @t values (0);
select CAST(bar as decimal(10,2)) bar from @t for xml path('foo');

--------------------------------------------
|               <foo><bar>0.00</bar></foo> |


declare @t table (bar float);    insert @t values (0);
select CAST(bar as bigint) bar from @t for xml path('foo');

--------------------------------------------
|                  <foo><bar>0</bar></foo> |
Run Code Online (Sandbox Code Playgroud)