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數據定義