Udostępnij za pośrednictwem


Using Monetary Data

Microsoft SQL Server przechowuje dane monetarne lub wartości walutowych, za pomocą dwóch typów danych: money i smallmoney. Te typy danych, można użyć dowolnego z następujących symboli walut.

Table of currency symbols, hexadecimal values

Waluta lub dane dotyczące kwot pieniężnych nie musi być ujęty w znaki pojedynczego cudzysłowu (').Ważne jest należy pamiętać, że w czasie, gdy można określić wartości pieniężnych poprzedzone symbolem waluty SQL Server nie magazynu wszelkie informacje o walucie skojarzone ze znakiem, przechowuje on tylko wartość liczbową. Na przykład aby przypisać wartość równą 100 dolary do zmiennej, użytkownik może wykonaj następujące czynności:

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

Wartość zwracana jest 100.0000 bez symbolu waluty.

Jeśli obiekt jest definiowany jako money, może zawierać maksymalnie 19 cyfr, z których 4 są po przecinku. Obiekt używa 8 bajtów do przechowywania danych.The money data type therefore has a precision of 19, a scale of 4, and a length of 8.

money i smallmoney jest ograniczona do czterech separatora dziesiętnego. Użycie decimal Typ danych, jeśli więcej przecinki dziesiętne są wymagane.

Użyj okresu do oddzielenia częściowe jednostek pieniężne, centów, podobnie jak z całości pieniężnej jednostek.Na przykład 2,15 określa 2 zł i 15 groszy.

Separatory przecinek nie są dozwolone w money lub smallmoney stałe, format wyświetlania tych typów danych zawiera przecinek jako separatorami. Można określić jawnie rzutować separatory przecinek tylko w przypadku ciągów znaków money lub smallmoney. Na przykład:

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