2010-08-18 75 views

回答

9

如果适用,视图层上的格式,而不是在数据层,即读取所有数据并截断它稍后(例如在C#客户端中)

+0

+1。在repeater中像这样绑定它工作'<%#DataBinder.Eval(Container.DataItem,“FieldName”,“{0:0.00}”)%>'。感谢指导我解决实际问题。 – IsmailS 2010-08-18 08:06:38

+0

@Ismail:很高兴帮助! :) P.S.我有同样的问题 - http://stackoverflow.com/questions/1308259/rounding-down-decimal14-3-to-third-decimal-digit-in-sql-2008 http://stackoverflow.com/questions/2938296/remove-trailing-zeros-from-decimal-in-sql-server – abatishchev 2010-08-18 10:34:22

+0

但是这不适用于像EvExpress网格这样的编辑组件。编辑表单被打破。 – f470071 2015-10-02 11:44:27

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

会做你所追求的

+0

这是有效的,但是当我在.aspx页面上将值赋给Repeater中的字段时,它再次显示两个尾随零。我正在使用Linq到SQL。 – IsmailS 2010-08-18 08:02:01

+0

您可以在转发器中使用ToString()指定格式以达到您的要求。 – 2010-08-18 08:06:08

+0

+1谢谢你的回答。你的回答也正确的看着我的问题。但@abatishchev试图解决更大的问题,而不是回答我的问题。这就是为什么,我已经接受了他的答案。 – IsmailS 2010-08-18 08:10:09

0
SELECT FORMAT(123.4567,'N2') 

它会帮助你

0

@IsmailS - 对我来说,更大的画面,让数据服务器格式尽可能,特别是当它作为一个内联投这样简单的事情。它会在你的其他代码中产生更少的混乱。例如,铸造价格,货币领域:

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

因人而异 - 这是我的亲身经历。