Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Định dạng số "human readable" (có dấu phân cách hàng nghìn) trong MySQL với FORMAT()

Giới thiệu

Hàm FORMAT(N, D) định dạng số N với D chữ số thập phân, thêm dấu phẩy phân cách hàng nghìn (locale mặc định en_US). Phù hợp hiển thị báo cáo, UI.

Ví dụ thực hành

1. Tạo bảng DemoTable859

mysql> CREATE TABLE DemoTable859 (Number BIGINT);

2. Chèn số lớn

mysql> INSERT INTO DemoTable859 VALUES (747464646473737),(3836365366464),(8376437647433);

3. Định dạng 0 chữ số thập phân

mysql> SELECT FORMAT(Number, 0) AS HumanReadableFormat FROM DemoTable859;

4. Kết quả

+---------------------+
| HumanReadableFormat |
+---------------------+
| 747,464,646,473,737 |
| 3,836,365,366,464   |
| 8,376,437,647,433   |
+---------------------+

Các tham số và biến thể

Gọi hàmKết quả (ví dụ 1234567.89)Ghi chú
FORMAT(1234567.89, 0)1,234,568Làm tròn, không thập phân
FORMAT(1234567.89, 2)1,234,567.892 chữ số thập phân
FORMAT(1234567.89, 2, 'de_DE')1.234.567,89Locale Đức (dấu chấm nghìn, phẩy thập phân) - MySQL 8.0+

Lưu ý quan trọng

  • Kết quả là chuỗi (VARCHAR), không phải số. Không dùng trực tiếp cho tính toán tiếp.
  • Làm tròn theo quy tắc(round half up).
  • Locale: MySQL 8.0+ hỗ trợ tham số locale thứ 3. Trước đó chỉ en_US.
  • Hiệu suất: OK cho hiển thị. Không dùng trong WHERE/ORDER BY/JOIN.

Định dạng tiền tệ Việt Nam

-- VN: dấu chấm phân cách nghìn, không thập phân (VND)
SELECT CONCAT(FORMAT(amount, 0), ' ₫') FROM payments;

-- Hoặc dùng CONVERT/CAST nếu cần tính toán
SELECT amount FROM payments ORDER BY amount DESC;