Utilisation des données monétaires
MicrosoftSQL Server utilise deux types de données pour stocker les données monétaires ou les valeurs de devise : money et smallmoney. Ces types de données peuvent utiliser n'importe lequel des symboles monétaires suivants.
Les valeurs de devise ou les données monétaires ne doivent pas être mises entre guillemets simples ('). Il est important de garder en mémoire que bien que vous puissiez spécifier des valeurs monétaires précédées d'un symbole de devise, SQL Server ne stocke pas les informations de devise associées au symbole, mais uniquement la valeur numérique. Par exemple, pour attribuer à une variable une valeur de 100 dollars, vous pouvez procéder comme suit :
DECLARE @dollars AS money
SET @dollars = $100
SELECT @dollars
La valeur retournée est 100.000, sans symbole de devise.
Si un objet est défini comme money, il peut contenir jusqu'à 19 chiffres, dont 4 à droite de la virgule. L'objet utilise 8 octets pour stocker les données. Le type de données money a donc une précision de 19, une échelle de 4 et une longueur de 8.
Les types money et smallmoney sont limités à quatre chiffres après la virgule. Utilisez le type de données decimal si un nombre supérieur de chiffres est nécessaire après la virgule.
Utilisez un point pour séparer les unités monétaires partielles, comme les centimes, des unités monétaires entières. Par exemple, 2.15 signifie 2 dollars et 15 cents.
Les séparateurs virgule ne sont pas autorisés dans les constantes money ou smallmoney, bien que le format d'affichage de ce type de données en contienne. Vous pouvez préciser les séparateurs virgule uniquement dans les chaînes de caractères explicitement converties en type money ou smallmoney. Par exemple :
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