0

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

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

我必须在程序中控制它还是有办法在 SQL Server 2005 中更改这种格式?

提前致谢

4

3 回答 3

4

我通常会在前端做这些格式化的东西。但是,如果您仍然必须在 DB 层本身内执行此操作,请使用 ROUND 函数。

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

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

Money Vs Decimal Vs Float 决策流程图(摘自 SQLCAT.com):

金钱 vs. 十进制 vs. 浮点数决策流程图摘自 SQLCat.com 资料来源: http ://sqlcat.com/sqlcat/b/technicalnotes/archive/2008/09/25/the-many-benefits-of-money-data-type.aspx

于 2012-10-07T03:27:42.147 回答
2

使用Round()功能。返回一个数值,四舍五入到指定的长度或精度。更多在这里。

Round(value,2,1)

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

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

于 2012-10-06T03:20:47.923 回答
2

试试这个它适用于 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)

希望这有帮助!

于 2013-12-07T09:27:41.990 回答