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

คูณคอลัมน์ที่มีค่า NULL ใน MySQL ด้วย COALESCE

ปัญหาการคูณกับ NULL

ใน SQL การคำนวณกับ NULL จะได้ผลลัพธ์เป็น NULL เสมอ:

NULL * 10 = NULL  -- ไม่ใช่ 0

การแก้ไขด้วย COALESCE

mysql> CREATE TABLE DemoTable1842 (
    NumberOfItems INT,
    Amount INT
);

mysql> INSERT INTO DemoTable1842 VALUES(10, 40);
mysql> INSERT INTO DemoTable1842 VALUES(20, 5);
mysql> INSERT INTO DemoTable1842 VALUES(NULL, 10);

Query คูณพร้อมจัดการ NULL

mysql> SELECT NumberOfItems, Amount,
    COALESCE(NumberOfItems, 1) * Amount AS Total
    FROM DemoTable1842;

ผลลัพธ์:

+---------------+--------+-------+
| NumberOfItems | Amount | Total |
+---------------+--------+-------+
|            10 |     40 |   400 |
|            20 |      5 |   100 |
|          NULL |     10 |    10 |
+---------------+--------+-------+

COALESCE vs IFNULL

ตัวอย่างเพิ่มเติม

-- ใช้ IFNULL (MySQL เฉพาะ)
SELECT IFNULL(NumberOfItems, 1) * Amount FROM DemoTable1842;

-- COALESCE หลายระดับ
SELECT COALESCE(col1, col2, col3, 0) * Amount FROM table;

-- กรณี Amount ก็อาจเป็น NULL
SELECT COALESCE(NumberOfItems, 1) * COALESCE(Amount, 0) FROM DemoTable1842;
ฟังก์ชันพารามิเตอร์คืนค่า
COALESCE(val1, val2, ...)หลายค่าค่าแรกที่ไม่ใช่ NULL
IFNULL(val1, val2)2 ค่าval1 ถ้าไม่ใช่ NULL, ไม่งั้น val2