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 Decision Flowchart(SQLCAT.comからの抜粋):

SQLCat.comからのお金vs.小数vs.浮動小数点の意思決定フローチャートの抜粋 ソース: 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)

2番目のパラメーターは、精度を小数点以下2桁に指定します。

値が1の3番目のパラメーターは、四捨五入ではなく切り捨てを指定します。

于 2012-10-06T03:20:47.923 に答える
2

これを試してください。SQLServer2008以下で機能します(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 に答える