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

MySQL หารค่าสองคอลัมน์ แสดงผลในคอลัมน์ใหม่

คำนวณทางคณิตศาสตร์ระหว่างคอลัมน์ใน 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 + 515
-ลบ10 - 55
*คูณ10 * 550
/หาร (Decimal)10 / 42.5000
DIVหารแบบ Integer10 DIV 42
% / MODModulo (เศษ)10 % 42

การจัดการ 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