ใช้ RIGHT() ดึง 3 หลักสุดท้าย แล้ว SUM() รวมกัน
สร้างตารางตัวอย่าง
mysql> create table DemoTable (
Code int );
Query OK, 0 rows affected (0.77 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> insert into DemoTable values(5464322); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable values(90884); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(23455644); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(4353633); Query OK, 1 row affected (0.11 sec)
แสดงข้อมูลทั้งหมด
mysql> select *from DemoTable;
+----------+ | Code | +----------+ | 5464322 | | 90884 | | 23455644 | | 4353633 | +----------+ 4 rows in set (0.00 sec)
คิวรี่หาผลรวม 3 หลักสุดท้าย
mysql> select sum(right(Code,3)) AS SumOfLast3Digit from DemoTable;
ผลลัพธ์:
+-----------------+ | SumOfLast3Digit | +-----------------+ | 2483 | +-----------------+ 1 row in set (0.00 sec)
คำอธิบายการคำนวณ
| Code | RIGHT(Code, 3) | ค่า |
|---|---|---|
| 5464322 | '322' | 322 |
| 90884 | '884' | 884 |
| 23455644 | '644' | 644 |
| 4353633 | '633' | 633 |
| รวม | 2483 | |
คำอธิบายฟังก์ชัน
RIGHT(str, len)- ดึงตัวอักษร len ตัวจากขวาสุด (คืนค่า String)- MySQL แปลง String เป็น Number อัตโนมัติในบริบทคณิตศาสตร์
SUM()รวมค่าตัวเลขทั้งหมด
กรณีข้อมูลเป็น VARCHAR (มี Leading Zeros)
SELECT SUM(CAST(RIGHT(code, 3) AS UNSIGNED)) FROM DemoTable;
ขยาย: หา 3 หลักแรก (LEFT)
SELECT SUM(CAST(LEFT(Code, 3) AS UNSIGNED)) FROM DemoTable;
กรณีต้องการ Modulo 1000 (ทางคณิตศาสตร์)
SELECT SUM(Code % 1000) FROM DemoTable;
วิธีนี้เร็วกว่าและไม่ต้องแปลงชนิดข้อมูล