Utilizzo dei dati di tipo valuta
In MicrosoftSQL Server, i dati di valuta vengono archiviati in due tipi di dati, ovvero money e smallmoney. È possibile utilizzare questi tipi di dati per i simboli di valuta illustrati di seguito.
Non è necessario racchiudere i dati di tipo valuta tra virgolette singole ('). È importante tenere presente che anche se è possibile specificare un simbolo di valuta che precede i valori di valuta, in SQL Server le informazioni relative alla valuta archiviate non sono associate al simbolo, ma è presente solo il valore numerico. Ad esempio è possibile assegnare un valore di 100 dollari a una variabile nel modo seguente:
DECLARE @dollars AS money
SET @dollars = $100
SELECT @dollars
Il valore restituito è 100.0000, senza un simbolo di valuta.
Un oggetto definito con il tipo money può includere fino a 19 cifre, 4 delle quali possono essere a destra del separatore decimale. Gli oggetti utilizzano 8 byte per l'archiviazione dei dati. Al tipo di dati money sono pertanto associati una precisione pari a 19, una scala pari a 4 e una lunghezza pari a 8.
I tipi di dati money e smallmoney sono limitati a quattro cifre decimali. Se è necessario un numero di cifre decimali maggiore, utilizzare il tipo di dati decimal.
Per separare le unità di valuta parziali, ad esempio i centesimi, da quelle intere, utilizzare il punto. Ad esempio, 2.15 indica 2 dollari e 15 centesimi.
Nelle costanti di tipo money o smallmoney non è consentito utilizzare la virgola come separatore, anche se il formato di visualizzazione di questo tipo di dati include la virgola come separatore. È possibile utilizzare la virgola come separatore solo nelle stringhe di tipo carattere convertite in modo esplicito in stringhe di tipo money o smallmoney. Ad esempio:
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