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

MySQL: ลบจุดทศนิยมแล้วหาผลรวม (REPLACE + SUM)

การลบจุดทศนิยมและรวมค่า

ใช้ 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, '.', '')) ลบจุดแล้วบวกเป็นจำนวนเต็ม ใช้ได้เฉพาะกรณีพิเศษ ไม่ใช่วิธีคำนวณทศนิยมมาตรฐาน