SQL Server 2005を使用していますが、いくつかの列をデータベースにMoney
形式で保存する必要があります。
しかし、SQL Serverはそれらを次のように格納します-> 0000.0000
、しかし私は小数点以下2桁だけが必要です---> 0000.00
プログラムでこれを制御する必要がありますか、それともSQL Server 2005でこの形式を変更する方法がありますか?
前もって感謝します
SQL Server 2005を使用していますが、いくつかの列をデータベースにMoney
形式で保存する必要があります。
しかし、SQL Serverはそれらを次のように格納します-> 0000.0000
、しかし私は小数点以下2桁だけが必要です---> 0000.00
プログラムでこれを制御する必要がありますか、それともSQL Server 2005でこの形式を変更する方法がありますか?
前もって感謝します
私は通常、これらのフォーマットをフロントエンドで行います。ただし、それでも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からの抜粋):
関数を使用Round()
します。指定された長さまたは精度に丸められた数値を返します。詳細はこちら。
Round(value,2,1)
2番目のパラメーターは、精度を小数点以下2桁に指定します。
値が1の3番目のパラメーターは、四捨五入ではなく切り捨てを指定します。
これを試してください。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)
この助けを願っています!