Định dạng số tiền thành tiền tệ với FORMAT() và CONCAT()
Kết hợp FORMAT(so, 2) (2 chữ số thập phân, dấu phân cách nghìn) và CONCAT() thêm ký hiệu tiền tệ.
Tạo bảng và dữ liệu
mysql> create table DemoTable ( Amount DECIMAL(15,4) ); mysql> insert into DemoTable values(90948484); mysql> insert into DemoTable values(1000000000); mysql> insert into DemoTable values(1535353536); mysql> insert into DemoTable values(773646463);
Truy vấn định dạng USD
mysql> select concat('USD ', format(Amount,2)) as Currency from DemoTable;
Kết quả
+----------------------+ | Currency | +----------------------+ | USD 90,948,484.00 | | USD 1,000,000,000.00 | | USD 1,535,353,536.00 | | USD 773,646,463.00 | +----------------------+
Lưu ý:
- Kết quả là VARCHAR, không dùng cho tính toán tiếp
FORMATdùng locale mặc định (dấu phẩy nghìn, chấm thập phân). Locale Việt Nam dùng chấm nghìn, phẩy thập phân → cần thiết lập locale hoặc xử lý ứng dụng- MySQL 8.0+:
FORMAT(Amount, 2, 'vi_VN')cho định dạng Việt Nam
Cách chuyên nghiệp hơn: Lưu số nguyên (cents/vnd) trong DB, format ở tầng ứng dụng (Java, PHP, Python...) với thư viện i18n chuẩn (ICU, NumberFormat).