Giới thiệu
Hàm FORMAT(number, decimals) định dạng số với dấu phẩy phân cách hàng nghìn và số chữ số thập phân cố định. Kết hợp CONCAT() để thêm ký hiệu tiền tệ.
1. Tạo bảng và dữ liệu
mysql> create table DemoTable (
-> Amount DECIMAL(15,4)
-> );
Query OK, 0 rows affected (0.75 sec)
mysql> insert into DemoTable values(90948484);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(1000000000);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(1535353536);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(773646463);
Query OK, 1 row affected (0.20 sec)
2. Dữ liệu gốc
mysql> select *from DemoTable;
+-----------------+ | Amount | +-----------------+ | 90948484.0000 | | 1000000000.0000 | | 1535353536.0000 | | 773646463.0000 | +-----------------+ 4 rows in set (0.00 sec)
3. Định dạng tiền tệ USD
mysql> select concat('USD ', format(Amount, 2)) as Currency from DemoTable;
4. 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 | +----------------------+ 4 rows in set (0.23 sec)
Giải thích:
FORMAT(Amount, 2): Làm tròn 2 chữ số thập phân, thêm dấu phẩy hàng nghìnCONCAT('USD ', ...): Nối tiền tố- Kết quả kiểu VARCHAR
Mở rộng: Hỗ trợ locale (MySQL 8.0+)
-- Định dạng theo locale Việt Nam (dấu chấm phân cách nghìn, phẩy thập phân) SELECT FORMAT(Amount, 2, 'vi_VN'); -- 90.948.484,00 -- Đa ngôn ngữ SELECT FORMAT(1234567.89, 2, 'en_US'); -- 1,234,567.89 SELECT FORMAT(1234567.89, 2, 'de_DE'); -- 1.234.567,89
Lưu ý: FORMAT làm tròn (round), không cắt bỏ (truncate). Dùng TRUNCATE() nếu cần cắt bỏ.