Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: จัดรูปแบบตัวเลขพันล้วงทศนิยม 2 ตำแหน่งด้วย FORMAT()

การจัดรูปแบบตัวเลขให้มีคอมม่าคั่นพันและทศนิยม 2 ตำแหน่งด้วย FORMAT()

FORMAT(number, decimals) จัดรูปแบบตัวเลขเป็นสตริง มีคอมม่าคั่นกลุ่มพัน และปัดเศษทศนิยมตามที่กำหนด

สร้างตารางและข้อมูล

mysql> create table DemoTable1394 (
    -> Amount decimal(7,3)
    -> );
Query OK, 0 rows affected (0.68 sec)

mysql> insert into DemoTable1394 values(60);
mysql> insert into DemoTable1394 values(2355.4);
mysql> insert into DemoTable1394 values(456);
mysql> insert into DemoTable1394 values(8769);

ข้อมูลต้นฉบับ

+----------+
| Amount   |
+----------+
| 60.000   |
| 2355.400 |
| 456.000  |
| 8769.000 |
+----------+

คำสั่ง FORMAT(Amount, 2)

mysql> select format(Amount, 2) from DemoTable1394;

ผลลัพธ์

+------------------+
| format(Amount,2) |
+------------------+
| 60.00            |
| 2,355.40         |
| 456.00           |
| 8,769.00         |
+------------------+

พารามิเตอร์ FORMAT(N, D, [locale])

  • N — ตัวเลขที่ต้องการจัดรูปแบบ
  • D — จำนวนทศนิยม (ปัดเศษ)
  • locale (optional, MySQL 5.7+) — locale สำหรับรูปแบบตัวเลข (เช่น 'de_DE' ใช้จุดคั่นพันและคอมม่าทศนิยม)

ตัวอย่าง Locale

SELECT FORMAT(1234567.89, 2, 'de_DE');  -- 1.234.567,89
SELECT FORMAT(1234567.89, 2, 'en_US');  -- 1,234,567.89
SELECT FORMAT(1234567.89, 2, 'th_TH');  -- 1,234,567.89 (ไทยใช้รูปแบบ US)

ข้อจำกัดของ FORMAT()

  • คืนค่า STRING (VARCHAR) ไม่ใช่ตัวเลข — ไม่สามารถคำนวณต่อได้โดยตรง
  • ใช้เฉพาะการแสดงผล (display) ไม่ควรใช้ใน WHERE/ORDER BY/JOIN
  • ปัดเศษแบบ Round half up (0.5 ขึ้นไปปัดขึ้น)

ทางเลือกอื่น: ตัวเลขในคำนวณ, สตริงในแสดงผล

-- ใน Application layer (แนะนำ)
-- PHP: number_format($val, 2, '.', ',')
-- Python: f"{val:,.2f}"
-- JavaScript: val.toLocaleString('en-US', {minimumFractionDigits: 2})

-- ใน SQL (ถ้าต้องคำนวณต่อ)
SELECT Amount, FORMAT(Amount, 2) AS DisplayAmount FROM DemoTable1394;