Usando dados monetários
O Microsoft SQL Server armazena dados monetários ou valores de moeda corrente, usando dois tipos de dados: money e smallmoney. Esses tipos de dados podem usar qualquer um dos seguintes símbolos de moeda.
Os dados de moeda ou monetários não precisam ser incluídos entre aspas simples ( ' ). É importante lembrar que apesar de você poder especificar valores monetários precedidos por um símbolo de moeda, o SQL Server não armazena quaisquer informações de moeda associada com o símbolo, só armazena o valor numérico. Por exemplo, para atribuir um valor de 100 dólares a uma variável, você pode fazer o seguinte:
DECLARE @dollars AS money
SET @dollars = $100
SELECT @dollars
O valor retornado é 100.0000, sem um símbolo de moeda.
Se um objeto estiver definido como money, poderá conter um máximo de 19 dígitos, 4 dos quais podem ser à direita da vírgula. O objeto usa 8 bytes para armazenar os dados. O tipo de dados money tem então uma precisão de 19, uma escala de 4, e um comprimento de 8.
money e smallmoney são limitados a quatro pontos decimais. Use o tipo de dados decimal, se forem necessários mais pontos decimais.
Use um ponto para separar unidades monetárias parciais, como centavos, de unidades monetárias inteiras. Por exemplo, 2.15 especifica 2 dólares e 15 centavos.
Não são permitidos separadores de vírgula em money ou constantes smallmoney, embora o formato de representação visual desses tipos de dados inclua separadores de vírgula. Você pode especificar os separadores de vírgula só em cadeias de caracteres explicitamente convertidas a money ou smallmoney. Por exemplo:
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