SQL Server 2005资金格式

时间:2012-10-06 03:02:43

标签: sql-server-2005

我一直在使用SQL Server 2005,我需要以Money格式在数据库中存储一些列。

但SQL Server会像这样存储它们 - > 0000.0000,但我只想要小数点后的2位数字---> 0000.00

我是否必须在程序中控制它,或者有一种方法可以在SQL Server 2005中更改此格式?

提前致谢

3 个答案:

答案 0 :(得分:4)

我通常会在前端做这些格式化的东西。但是如果你仍然需要在DB层本身内进行,那么可以使用ROUND函数。

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

还建议您查看 Money& amp;之间的性能存储比较由Aaron Bertrand撰写的小数帖子:https://sqlblog.org/2008/04/27/performance-storage-comparisons-money-vs-decimal

Money Vs Decimal Vs Float决策流程图(摘自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

答案 1 :(得分:2)

使用Round()功能。返回一个数值,舍入为指定的长度或精度。 更多here.

Round(value,2,1)

第二个参数指定精度为小数点后两位。

第一个值为1的参数指定截断而不是舍入。

答案 2 :(得分:1)

尝试这适用于SQL Server 2008及更低版本(2012年已经有一个可以使用的FORMAT()函数)

这仅适用于Money和SmallMoney数据类型

declare @v money -- or smallmoney
set @v = 1000.0123
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)

希望这有帮助!