在本教程中,将学习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
数据类型来存储精确的数值。