บทนำ
การหารตัวเลขใน MySQL จะได้ผลลัพธ์เป็นทศนิยม (Decimal) หากต้องการผลลัพธ์เป็นจำนวนเต็ม (Integer) สามารถใช้ CAST() หรือ FLOOR()
ตัวอย่างการสร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Number INT
-> );
Query OK, 0 rows affected (0.50 sec)
mysql> INSERT INTO DemoTable(Number) VALUES(10);
mysql> INSERT INTO DemoTable(Number) VALUES(20);
mysql> INSERT INTO DemoTable(Number) VALUES(30);
mysql> INSERT INTO DemoTable(Number) VALUES(40);
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์
+----+--------+
| Id | Number |
+----+--------+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
+----+--------+
4 rows in set (0.00 sec)
คำสั่งหาร 2 (ผลลัพธ์เป็นทศนิยม)
mysql> SELECT Id, Number, (Number/2) AS DivideBy2 FROM DemoTable;
ผลลัพธ์
+----+--------+-----------+
| Id | Number | DivideBy2 |
+----+--------+-----------+
| 1 | 10 | 5.0000 |
| 2 | 20 | 10.0000 |
| 3 | 30 | 15.0000 |
| 4 | 40 | 20.0000 |
+----+--------+-----------+
4 rows in set (0.00 sec)
คำสั่งหาร 2 และแปลงเป็นจำนวนเต็มด้วย CAST
mysql> SELECT Id, Number, CAST((Number/2) AS UNSIGNED) AS DivideBy2 FROM DemoTable;
ผลลัพธ์
+----+--------+-----------+
| Id | Number | DivideBy2 |
+----+--------+-----------+
| 1 | 10 | 5 |
| 2 | 20 | 10 |
| 3 | 30 | 15 |
| 4 | 40 | 20 |
+----+--------+-----------+
4 rows in set (0.00 sec)
ฟังก์ชันแปลงชนิดข้อมูลที่เกี่ยวข้อง
| ฟังก์ชัน | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| CAST(expr AS type) | แปลงชนิดข้อมูลมาตรฐาน SQL | CAST(3.14 AS UNSIGNED) → 3 |
| CONVERT(expr, type) | แปลงชนิดข้อมูล (MySQL specific) | CONVERT(3.14, UNSIGNED) → 3 |
| FLOOR(num) | ปัดเศษลง (ทศนิยม → จำนวนเต็ม) | FLOOR(5.9) → 5 |
| CEILING(num) | ปัดเศษขึ้น | CEILING(5.1) → 6 |
| ROUND(num, decimals) | ปัดเศษตามหลักทศนิยม | ROUND(5.67, 1) → 5.7 |
การหารแบบ Integer Division (MySQL 8.0+)
SELECT Number DIV 2 FROM DemoTable; -- ผลลัพธ์เป็น Integer โดยตรง