金額データの使用

MicrosoftSQL Server では、money 型と smallmoney 型を使用して金額データ (通貨値) を格納します。これらのデータ型は次の通貨記号を使用できます。

通貨記号と 16 進数値のテーブル

通貨データまたは金額データは単一引用符 (') で囲む必要はありません。通貨記号が前に付いた金額値を指定することはできますが、SQL Server はその記号に関連付けられた通貨情報を格納せず、数値のみを格納することに注意してください。たとえば、100 ドルの値を変数に代入する場合、次のようなコードを記述できます。

DECLARE @dollars AS money
SET @dollars = $100
SELECT @dollars

返される値は、通貨記号のない 100.0000 です。

オブジェクトを money 型として定義した場合、最大 19 桁を格納でき、そのうち 4 桁を小数点以下桁数として使用できます。このオブジェクトは 8 バイトを使用してデータを格納します。したがって、money 型の有効桁数は 19、小数点以下桁数は 4、長さは 8 です。

money 型は小数点以下 4 桁まで、smallmoney 型は小数点以下 2 桁まで格納できます。これより多い小数点以下桁数を格納する必要がある場合は、decimal 型を使用してください。

すべての通貨単位からセントなどの部分通貨単位を区切るには、ピリオドを使用します。たとえば、2.15 は 2 ドル 15 セントを表します。

money 型と smallmoney 型の定数ではコンマを区切り記号として使用できませんが、表示形式ではコンマを区切り記号として使用できます。money 型または smallmoney 型にキャストされた文字列でのみ、コンマを区切り記号として指定できます。次に例を示します。

USE tempdb;
GO
CREATE TABLE TestMoney (cola INT PRIMARY KEY, colb MONEY);
GO
SET NOCOUNT ON;
GO

-- The following three INSERT statements work.
INSERT INTO TestMoney VALUES (1, $123.45);
GO
INSERT INTO TestMoney VALUES (2, $123123.45);
GO
INSERT INTO TestMoney VALUES (3, CAST('$444,123.45' AS MONEY) );
GO

-- This INSERT statement gets an error because of the comma
-- separator in the money string.
INSERT INTO TestMoney VALUES (3, $555,123.45);
GO
SET NOCOUNT OFF;
GO
SELECT * FROM TestMoney;
GO