2010-08-18 21 views
6
SELECT ROUND(123.4567, 2)` gives me `123.4600` 

'da yalnızca iki ondalık basamak olsun, ancak 123.46'a ihtiyacım var.Para veri türü SQL Server

Veri türü alan paradır.

Çözüm:

<%# DataBinder.Eval(Container.DataItem, "FieldName","{0:0.00}") %> 

cevap

9

Varsa sonra, görünüm katmanında biçimi değil, veri katmanı, yani tüm verileri okumak ve kesmek ne yapacak Daha sonra (C# istemcisinde olduğu gibi)

+0

+1. Tekrarlayıcıda bunun gibi bağlanması, <% # DataBinder.Eval (Container.DataItem, "FieldName", "{0: 0.00}")%> 'çalıştı. Asıl sorunu çözmem için bana teşekkür ettiğin için teşekkürler. – IsmailS

+0

@Ismail: Yardım ettiğine sevindim! :) P.S. Aynı sorunları yaşadım - http://stackoverflow.com/questions/1308259/rounding-down-decimal14-3-to-third-decimal-digit-in-sql-2008 http://stackoverflow.com/questions/2938296/remove-trailing-sıfırlar-on-ondalık-in-sql-sunucu – abatishchev

+0

Ama bu EvExpress ızgara gibi bileşenleri düzenlemek işe yaramaz. Düzenleme formları bu şekilde bozulur. – f470071

16
SELECT CAST(ROUND(123.4567, 2) AS MONEY) 

Eğer

+0

Bu çalışır, ancak değeri .aspx sayfamdaki Repeater'da bir alana atarım, tekrar iki sıfır sıfır gösterir. Linq sql kullanıyorum. – IsmailS

+0

Tekrarlayıcıda istediğiniz biçimi belirten bir ToString() kullanabilirsiniz. Cevabınız için –

+0

+1 teşekkürler. Cevabım da soruma bakmakta haklı. Ama @abatishchev sorumu cevaplamak yerine daha büyük sorunu çözmeye çalıştı. Bu yüzden cevabını kabul ettim. – IsmailS

0
SELECT FORMAT(123.4567,'N2') 

O

0

@IsmailS size yardımcı olacak - Benim için, daha büyük resim bir satır içi döküm gibi basit bir şey, özellikle mümkün olduğunca veri sunucusu biçimi kadar izin vermektir. Diğer kodunuzda daha az dağınıklık verir. Örneğin, bir para alanı Fiyatı döküm:

select CAST(Price as numeric(17,2)) Price from PriceTable

YMMV - Bu benim kişisel bir deneyimdir.

İlgili konular