在本教學中,將學習SQL Server DECIMAL
數據類型以及如何使用它來存儲精確的數值。
DECIMAL數據類型簡介
要存儲具有固定精度和比例的數字,請使用DECIMAL
數據類型。
以下是DECIMAL
數據類型的語法:
DECIMAL(p,s)
在上面的語法中,
p
是指有效位數(精度),它是將存儲的小數位總數,包括小數點的左側和右側。 精度範圍為1
到38
。默認精度為38
。s
是小數位數(刻度),它是指定存儲在小數點右側的小數位數。刻度範圍從0
到p
。 只有在指定精度時才能指定刻度。 默認情況下,刻度為零。
存儲大小因精度而異,如下表所示:
精度 | 存儲位元組 |
---|---|
1 – 9 |
5 |
10-19 |
9 |
20-28 |
13 |
29-38 |
19 |
NUMERIC
和DECIMAL
是同義詞,因此可以互換使用它們。
以下聲明是等效的:
DECIMAL(10,2)
NUMERIC(10,2)
因為DECIMAL
的ISO同義詞是DEC
和DEC(p,s)
,所以可以使用DECIMAL
或DEC
:
DECIMAL(10,2)
DEC(10,2)
SQL Server DECIMAL示例
下麵舉一個使用DECIMAL
和NUMERIC
數據類型的例子。
首先,創建一個包含兩列的新表:一個小數和一個數字:
CREATE TABLE test.sql_server_decimal (
dec_col DECIMAL (4, 2),
num_col NUMERIC (4, 2)
);
其次,向test.sql_server_decimal
表中插入一個新行:
INSERT INTO test.sql_server_decimal (dec_col, num_col)
VALUES
(10.05, 20.05);
第三,查詢表中的數據:
SELECT
dec_col,
num_col
FROM
test.sql_server_decimal;
第四,以下示例嘗試向表中插入一個新行,其值超過列定義中指定的精度和小數位數:
INSERT INTO test.sql_server_decimal (dec_col, num_col)
VALUES
(99.999, 12.345);
SQL Server發出錯誤並終止了該語句執行:
Arithmetic overflow error converting numeric to data type numeric.
The statement has been terminated
在本教學中,學習了如何使用SQL Server DECIMAL
數據類型來存儲精確的數值。
上一篇:
SQL Server數據類型
下一篇:
SQL Server數據定義