การจัดรูปแบบตัวเลขให้มีคอมม่าคั่นพันและทศนิยม 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;