2010-11-16 7 views
5

Vous pouvez simplement: table1: a une colonne1 de type 'float' au lieu de'float' SQL type de données, lorsque la sortie au format XML, provoque résultat float indésirable

SELECT column1 from Table1; donne des valeurs comme on le voit dans le tableau.

Dites ceci retourne 15.1

Cependant, si vous essayez

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

retours: 1.510000000000000e + 001

Quelqu'un at-il vu cela, et comment a été fixé ce? merci d'avance :)

+0

Qu'est-ce que la base de données est-ce? –

+0

duplication possible de [Pourquoi les nombres décimaux ne peuvent-ils pas être représentés exactement en binaire?] (Http://stackoverflow.com/questions/1089018/why-cant-decimal-numbers-be-represented-exactly-in-binary) –

+2

Dana: Ce n'est pas un doublon. Le PO a un problème de formatage, pas de représentation. – Gabe

Répondre

8

C'est ce que vous obtenez lorsque vous travaillez avec des nombres à virgule flottante. Vous pouvez essayer ceci cependant:

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

vous aurez juste besoin d'ajuster la précision sur le décimal pour adapter à vos besoins.

+0

Oui, j'utilisais sql server 2008 –

2

assumant également MSSQL, la fonction str peut répondre à vos besoins (MSDN):

select str(column1, 3,1)