Verwenden von Währungsdaten

Microsoft SQL Server speichert Währungsdaten (Währungswerte) mithilfe von zwei Datentypen: money und smallmoney. Diese Datentypen können eines der folgenden Währungssymbole verwenden.

Tabelle mit Währungssymbolen, hexadezimale Werte

Währungsdaten müssen nicht in einfache Anführungszeichen (') eingeschlossen werden. Sie sollten stets bedenken, dass Sie zwar Währungswerte angeben können, denen ein Währungssymbol vorangestellt ist, dass SQL Server jedoch keinerlei mit diesem Symbol verbundene Währungsinformationen speichert, sondern lediglich den nummerischen Wert. Um z. B. einer Variablen einen Wert von 100 Dollar zuzuweisen, können Sie folgendermaßen vorgehen:

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

Der zurückgegebene Wert ist 100.0000 ohne ein Währungssymbol.

Falls ein Objekt als money definiert ist, kann es maximal 19 Ziffern enthalten. Davon können 4 Ziffern rechts vom Dezimaltrennzeichen stehen. Das Objekt verwendet 8 Byte zum Speichern der Daten. Der money-Datentyp weist daher eine Genauigkeit von 19, 4 Dezimalstellen und eine Länge von 8 auf.

money und smallmoney sind auf vier Dezimalstellen beschränkt. Verwenden Sie den decimal-Datentyp, wenn mehr Dezimalstellen erforderlich sind.

Mit einem Punkt werden Währungsuntereinheiten, wie z. B. Cent, von ganzen Währungseinheiten getrennt. Die Zahl 2.15 gibt z. B. 2 Dollar und 15 Cent an.

Kommas als Trennzeichen sind in money- oder smallmoney-Konstanten nicht zulässig, obwohl das Anzeigeformat dieser Datentypen Kommas als Trennzeichen enthält. Kommas als Trennzeichen können nur in Zeichenfolgen angegeben werden, die explizit in money- oder smallmoney-Daten konvertiert werden. Beispiel:

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