2012-10-06 154 views
0

我一直在使用SQL Server 2005,我需要在Money格式的數據庫中存儲一些列。SQL Server 2005貨幣格式

但SQL Server存儲他們這樣的 - >0000.0000,但我只想在小數點--->0000.00

我必須在程序來控制這個還是有辦法後2個位數在SQL Server 2005中更改此格式?

在此先感謝

+0

你可以發佈該列的數據類型嗎? –

+3

停止使用MONEY,使用DECIMAL。在計算中使用時,可以更好地控制精度/縮放比例,提高精度。 –

+0

如果您必須使用MONEY,您可以將其轉換爲十進制'cast(0.12345,作爲十進制(5,2))',產生0.12 – RLS

回答

5

我通常會在前端做這些格式化的東西。但是,如果你仍然需要在數據庫層中完成它,那麼就使用ROUND函數。

SELECT CAST(ROUND(1234.1234, 2) AS MONEY) 

也建議你檢查出的錢&十進制亞倫貝特朗寫後的高性能存儲比較:http://sqlblog.com/blogs/aaron_bertrand/archive/2008/04/27/performance-storage-comparisons-money-vs-decimal.aspx

錢Vs的十進制浮點Vs的決策流程圖(摘自SQLCAT.com) :

Money vs. Decimal vs. Float Decision Flowchart Extract from SQLCat.com 來源:http://sqlcat.com/sqlcat/b/technicalnotes/archive/2008/09/25/the-many-benefits-of-money-data-type.aspx

2

使用Round()函數。返回一個數值,四捨五入到指定的長度或精度。 更多here.

Round(value,2,1) 

第二個參數指定的精度是小數點後兩位。

值爲1的第三個參數指定了截斷而非四捨五入。

1

試試這個它適用於SQL Server 2008和以下(2012年本來就有,你可以使用格式()函數)

這將僅適用於數據類型money和s​​mallmoney

declare @v money -- or smallmoney 
set @v = 1000.
select convert(varchar(25), @v, 0) 
select convert(varchar(25), @v, 1) 
select convert(varchar(25), @v, 2) 
select convert(varchar(25), @v, 126) 

select '$' + convert(varchar(25), @v, 0) 
select '$' + convert(varchar(25), @v, 1) 
select '$' + convert(varchar(25), @v, 2) 
select '$' + convert(varchar(25), @v, 126) 

希望得到這個幫助!

+0

讓我糾正自己FORMAT()函數僅在SQL Server 2012中可用 – Jade