SQL“float”数据类型在以XML格式输出时会导致不希望的浮点结果

时间:2010-11-16 00:47:37

标签: sql-server xml floating-point

您可以尝试简单地: table1:有一个类型为'float'的column1 而不是

SELECT column1 from Table1;给出如表中所示的值。

假设这返回15.1

但是,如果你尝试

Select column1 from Table1 
FOR XML PATH('Table1'), Root('SomeRoot'), TYPE  

返回:1.510000000000000e + 001

有没有人见过这个,这是如何解决的? 提前谢谢:)

3 个答案:

答案 0 :(得分:9)

这是使用浮点数时的结果。你可以试试这个:

SELECT CONVERT(varchar(100), CAST(column1 AS decimal(38,2)))

您只需要调整小数的精度以满足您的需求。

答案 1 :(得分:2)

同样假设MSSQL,str函数可能符合您的需求(MSDN):

select str(column1, 3,1)

答案 2 :(得分:0)

没有必要将浮点值转换为字符串来解决此问题。 只需将浮点值转换为decimalnumeric类型,即可获得所需的精度。

SELECT CAST(column1 AS decimal(38,2))

SELECT CAST(column1 AS numeric(18,5))

当数字将由Sql Server以XML格式解析时,它不会呈指数形式。

这种方法明显比字符串转换更快(会发生两次)。