ใช้ฟังก์ชัน FORMAT() พร้อม locale 'de_DE' (เยอรมัน) ซึ่งใช้จุดคั่นพันและคอมม่าคั่นทศนิยม
ตรวจสอบเวอร์ชัน MySQL
mysql> SELECT VERSION();
+-----------+ | VERSION() | +-----------+ | 8.0.12 | +-----------+
FORMAT() รองรับ locale ตั้งแต่ MySQL 5.5+
ไวยากรณ์
SELECT FORMAT(yourColumnName, decimalPlaces, 'de_DE') AS anyAliasName FROM yourTableName;
สร้างตารางตัวอย่าง
mysql> CREATE TABLE formatNumberDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Number DECIMAL(19,1)
-> );
เพิ่มข้อมูลตัวอย่าง
mysql> INSERT INTO formatNumberDemo(Number) VALUES (10000000000000.2), (1000.4), (1000000.6), (100000000.7), (100000000000000000.8);
แสดงข้อมูลดิบ
mysql> SELECT * FROM formatNumberDemo;
ผลลัพธ์:
+----+----------------------+ | Id | Number | +----+----------------------+ | 1 | 10000000000000.2 | | 2 | 1000.4 | | 3 | 1000000.6 | | 4 | 100000000.7 | | 5 | 100000000000000000.8 | +----+----------------------+
จัดรูปแบบด้วย FORMAT(..., 3, 'de_DE')
mysql> SELECT FORMAT(Number, 3, 'de_DE') AS Numberformat FROM formatNumberDemo;
ผลลัพธ์:
+-----------------------------+ | Numberformat | +-----------------------------+ | 10.000.000.000.000,200 | | 1.000,400 | | 1.000.000,600 | | 100.000.000,700 | | 100.000.000.000.000.000,800 | +-----------------------------+
Locale อื่นๆ ที่น่าสนใจ
| Locale | Thousands Sep | Decimal Sep | ตัวอย่าง |
|---|---|---|---|
| de_DE | . | , | 1.234,56 |
| en_US | , | . | 1,234.56 |
| fr_FR | space | , | 1 234,56 |
| th_TH | , | . | 1,234.56 |
ข้อจำกัด
- คืนค่าเป็น
VARCHARไม่ใช่ตัวเลข (ไม่สามารถคำนวณต่อได้โดยตรง) - ปัดเศษตาม decimalPlaces ที่ระบุ
- locale ต้องติดตั้งในระบบปฏิบัติการหรือ MySQL รองรับ