คำนวณทางคณิตศาสตร์ระหว่างคอลัมน์ใน SELECT
MySQL รองรับ Arithmetic Operators (+, -, *, /, %) ใช้ใน SELECT ได้โดยตรง
ตัวอย่าง: หาร FirstNumber / SecondNumber
CREATE TABLE DemoTable719 (FirstNumber INT, SecondNumber INT);
INSERT INTO DemoTable719 VALUES
(20, 10), (500, 50), (400, 20);
Query:
SELECT *, FirstNumber / SecondNumber AS Result
FROM DemoTable719;
ผลลัพธ์:
+-------------+--------------+---------+
| FirstNumber | SecondNumber | Result |
+-------------+--------------+---------+
| 20 | 10 | 2.0000 |
| 500 | 50 | 10.0000 |
| 400 | 20 | 20.0000 |
+-------------+--------------+---------+
Arithmetic Operators ใน MySQL
| Operator | ชื่อ | ตัวอย่าง | ผลลัพธ์ |
|---|---|---|---|
| + | บวก | 10 + 5 | 15 |
| - | ลบ | 10 - 5 | 5 |
| * | คูณ | 10 * 5 | 50 |
| / | หาร (Decimal) | 10 / 4 | 2.5000 |
| DIV | หารแบบ Integer | 10 DIV 4 | 2 |
| % / MOD | Modulo (เศษ) | 10 % 4 | 2 |
การจัดการ Division by Zero
-- MySQL คืนค่า NULL (ไม่ Error) แต่มี Warning
SELECT 10 / 0; -- NULL
-- ใช้ NULLIF ป้องกัน
SELECT 10 / NULLIF(0, 0); -- NULL
-- ใช้ CASE
SELECT CASE WHEN divisor = 0 THEN NULL ELSE dividend / divisor END;
Precision และ Decimal Places
การหารใน MySQL คืนค่า DECIMAL โดยอัตโนมัติ (Scale = 4 Default)
-- กำหนด Decimal Places เอง
SELECT ROUND(FirstNumber / SecondNumber, 2) AS Result
FROM DemoTable719;
-- หรือ CAST
SELECT CAST(FirstNumber / SecondNumber AS DECIMAL(10,2)) AS Result
FROM DemoTable719;
ตัวอย่างใช้งานจริง: คำนวณ Unit Price
SELECT
product_name,
total_price,
quantity,
ROUND(total_price / NULLIF(quantity, 0), 2) AS unit_price
FROM order_items;
⚠️ Integer Division Trap
ในบาง DB: 5 / 2 = 2 (Integer Division) แต่ MySQL: 5 / 2 = 2.5 (Decimal Division)
ใช้ DIV หรือ FLOOR() ถ้าต้องการ Integer Division