DECIMAL là lựa chọn chuẩn cho tiền tệ vì lưu trữ chính xác (fixed-point), không sai số làm tròn như FLOAT/DOUBLE.
Cú pháp
DECIMAL(tong_so_chu_so, so_chu_so_sau_dau_cham)
Ví dụ: DECIMAL(10,2) lưu được đến 99,999,999.99 (10 chữ số, 2 sau dấu phẩy).
Ví dụ minh họa
Tạo bảng CurrenciesDemo:
CREATE TABLE CurrenciesDemo (TotalPrice DECIMAL(10,2));
INSERT INTO CurrenciesDemo VALUES
(1647575.67), (1647575), (99599596), (1986.50), (99999999.90);
Kết quả:
+-------------+
| TotalPrice |
+-------------+
| 1647575.67 |
| 1647575.00 |
| 99599596.00 |
| 1986.50 |
| 99999999.90 |
+-------------+
Hiển thị với ký hiệu tiền tệ
SELECT CONCAT('$', TotalPrice) AS DollerSign FROM CurrenciesDemo;
+--------------+
| DollerSign |
+--------------+
| $1647575.67 |
| $1647575.00 |
| $99599596.00 |
| $1986.50 |
| $99999999.90 |
+--------------+
Lưu ý quan trọng:
- Không dùng
FLOAT/DOUBLEcho tiền (lỗi làm tròn nhị phân). - Chọn
TONG_SO_CHU_SOđủ lớn cho giá trị tối đa dự kiến. - MySQL 8.0+: Có thể dùng
DECIMAL(19,4)cho độ chính xác cao (tiên tệ crypto, tỷ giá). - Lưu giá trị nguyên (cents) trong
BIGINTcũng là một pattern phổ biến (tránh hoàn toàn dấu phẩy).