Kiểu dữ liệu Decimal trong SQL Server

Kiểu dữ liệu Decimal trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về kiểu dữ liệu DECIMAL trong SQL Server và cách sử dụng nó để lưu trữ các giá trị số thập phân.

Tổng quan về kiểu dữ liệu DECIMAL trong SQL Server

Để lưu trữ các số có độ chính xác và tỷ lệ cố định, bạn sử dụng kiểu dữ liệu DECIMAL.

Sau đây là cú pháp của kiểu dữ liệu DECIMAL:

DECIMAL(p,s)

Trong cú pháp này:

  • p là độ chính xác là tổng số chữ số thập phân tối đa sẽ được lưu trữ, cả ở bên trái và bên phải của dấu thập phân. Độ chính xác có phạm vi từ 1 đến 38. Độ chính xác mặc định là 38.
  • s là tỷ lệ là số chữ số thập phân sẽ được lưu trữ ở bên phải của dấu thập phân. Thang đo có phạm vi từ 0 đến p (độ chính xác). Chỉ có thể chỉ định thang đo nếu độ chính xác được chỉ định. Theo mặc định, tỷ lệ bằng không.

Kích thước bộ nhớ tối đa khác nhau, tùy thuộc vào độ chính xác như được minh họa trong bảng sau:

Độ chính xác Số byte lưu trữ
1 – 9 5
10-19 9
20-28 13
29-38 17

Và vì NUMERIC là synonym của DECIMAL, do đó, bạn có thể sử dụng chúng thay thế cho nhau.

Các khai báo sau là tương đương:

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

Bởi vì ISO synonym của DECIMALDECDEC(p,s), bạn có thể sử dụng một trong hai DECIMAL hoặc DEC:

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

Ví dụ về DECIMAL trong SQL Server

Hãy lấy một ví dụ về việc sử dụng kiểu dữ liệu DECIMALNUMERIC.

Đầu tiên, hãy tạo một bảng mới bao gồm hai cột: một cột DECIMAL và một cột NUMERIC như sau:

CREATE TABLE test.sql_server_decimal (
    dec_col DECIMAL (4, 2),
    num_col NUMERIC (4, 2)
);

Thứ hai, thêm một hàng mới vào bảng test.sql_server_decimal:

INSERT INTO test.sql_server_decimal (dec_col, num_col)
VALUES
    (10.05, 20.05);

Thứ ba, truy vấn dữ liệu từ bảng:

SELECT
    dec_col,
    num_col
FROM
    test.sql_server_decimal;

Thứ tư, ví dụ sau cố gắng chèn một hàng mới vào bảng với các giá trị vượt quá độ chính xác và tỷ lệ được chỉ định trong định nghĩa cột:

INSERT INTO test.sql_server_decimal (dec_col, num_col)
VALUES
    (99.999, 12.345);

SQL Server sẽ thông báo lỗi và dừng câu lệnh:

Arithmetic overflow error converting numeric to data type numeric.
The statement has been terminated

Trong hướng dẫn này, bạn đã học cách sử dụng kiểu dữ liệu DECIMAL trong SQL Server để lưu trữ các giá trị số thập phân.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *