SQL Server Decimal数据类型

在本教程中,将学习SQL Server DECIMAL数据类型以及如何使用它来存储精确的数值。

DECIMAL数据类型简介

要存储具有固定精度和比例的数字,请使用DECIMAL数据类型。

以下是DECIMAL数据类型的语法:

DECIMAL(p,s)

在上面的语法中,

  • p是指有效位数(精度),它是将存储的小数位总数,包括小数点的左侧和右侧。 精度范围为138。默认精度为38

  • s是小数位数(刻度),它是指定存储在小数点右侧的小数位数。刻度范围从0p。 只有在指定精度时才能指定刻度。 默认情况下,刻度为零。

存储大小因精度而异,如下表所示:

精度 存储字节
1 – 9 5
10-19 9
20-28 13
29-38 19

NUMERICDECIMAL是同义词,因此可以互换使用它们。

以下声明是等效的:

DECIMAL(10,2)
NUMERIC(10,2)

因为DECIMAL的ISO同义词是DECDEC(p,s),所以可以使用DECIMALDEC

DECIMAL(10,2)
DEC(10,2)

SQL Server DECIMAL示例

下面举一个使用DECIMALNUMERIC数据类型的例子。

首先,创建一个包含两列的新表:一个小数和一个数字:

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数据定义