2010-11-16 6 views
5

neden olduğunda Basitçe deneyebilirsiniz: table1: tip 'şamandıra' yerine SQL 'float' veri türü, çıktı XML olarak, istenmeyen şamandıra sonucu

SELECT column1 from Table1;

tablosunda görüldüğü gibi değerleri verir bir column1 sahiptir.

Eğer

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

döner denerseniz bu, ancak 15.1

döndürür ki: 1.510000000000000e 001

Herkes bu gördü + ve nasıl bu giderildi? şimdiden teşekkürler :)

+0

Ne veritabanı şudur: –

+0

olası nüshası [Neden ondalık sayılar tam olarak ikili olarak gösterilemez?] (Http://stackoverflow.com/questions/1089018/why-cant-decimal-numbers-be-represented-exactly-in-binary) –

+2

Dana: Bu bir kopya değil. OP, biçimlendirme değil, gösterim ile ilgili bir soruna sahiptir. – Gabe

cevap

8

Bu, kayan noktalı sayılarla çalışırken elde ettiğiniz şeydir. Sen bu olsa deneyebilirsiniz: Eğer sadece ihtiyaçlarına uygun ondalık üzerindeki hassasiyetini ayarlamak gerekir

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

.

select str(column1, 3,1) 
+0

Evet, sql server 2008 kullanıyordum –

2

Ayrıca MSSQL, str işlevi ihtiyaçlarınızı ( MSDN) uyabilir varsayarak?