Тип данных SQL 'float' при выводе в формате XML вызывает нежелательный результат float

Вы можете попробовать просто: table1: имеет столбец типа 'float' вместо

SELECT column1 from Table1; дает значения, как показано в таблице.

говорят, это возвращает 15.1

однако, если вы попытаетесь

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

возвращает: 1.510000000000000 e + 001

кто-нибудь видел это, и как это исправить? заранее спасибо:)

3 ответов


Это то, что вы получаете при работе с числами с плавающей запятой. Вы можете попробовать это, хотя:

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

вам просто нужно будет настроить точность на десятичной в соответствии с вашими потребностями.


также предполагая MSSQL,


для решения этой проблемы нет необходимости преобразовывать значение float в строку. Просто преобразуйте значение float в decimal или numeric тип, с той точностью, которую вы хотите.

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

или

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

когда номер будет проанализирован в XML Sql Server, он не будет в экспоненциальной форме.

этот подход, очевидно, быстрее, чем преобразование строки (это произойдет дважды).