การลบจุดทศนิยมและรวมค่า
ใช้ REPLACE(str, '.', '') ลบจุดทุกตัว แล้วแปลงเป็นตัวเลขและ SUM()
ตัวอย่าง
mysql> create table DemoTable857(Price varchar(100));
Query OK, 0 rows affected (1.40 sec)
mysql> insert into DemoTable857 values('50.60');
mysql> insert into DemoTable857 values('40.30.20');
mysql> insert into DemoTable857 values('10.20');
คำสั่ง
mysql> select sum(replace(Price, '.', '')) as SumOfAll from DemoTable857;
ผลลัพธ์:
+----------+
| SumOfAll |
+----------+
| 409100 |
คำนวณย้อนกลับ
- '50.60' -> '5060' -> 5060
- '40.30.20' -> '403020' -> 403020
- '10.20' -> '1020' -> 1020
- รวม = 5060 + 403020 + 1020 = 409100
⚠️ ข้อควรระวัง
- วิธีนี้ ไม่ใช่การลบทศนิยมทางคณิตศาสตร์ (50.60 != 5060)
- เป็นการลบตัวอักษร '.' ออกจากสตริง แล้วอ่านเป็นจำนวนเต็ม
- เหมาะสำหรับข้อมูลที่เก็บเป็น VARCHAR และต้องการ "นำตัวเลขมาต่อกัน"
- สำหรับคำนวณเงินจริง ควรเก็บเป็น
DECIMAL(10,2)และใช้SUM()โดยตรง
วิธีที่ถูกต้องสำหรับเงิน
-- ถ้าต้องการบวก 50.60 + 40.30 + 10.20
SELECT SUM(CAST(Price AS DECIMAL(10,2))) FROM DemoTable857;
สรุป
SUM(REPLACE(col, '.', '')) ลบจุดแล้วบวกเป็นจำนวนเต็ม ใช้ได้เฉพาะกรณีพิเศษ ไม่ใช่วิธีคำนวณทศนิยมมาตรฐาน