ใช้ COALESCE() ในคำสั่ง UPDATE เพื่อกำหนดค่าใหม่ให้คอลัมน์ที่เป็น NULL โดยอิงจากคอลัมน์อื่น (Fallback Value)
ตัวอย่างการใช้งาน
1. สร้างตาราง
mysql> CREATE TABLE DemoTable1805 (
Name1 VARCHAR(20),
Name2 VARCHAR(20)
);
Query OK, 0 rows affected (0.00 sec)
2. เพิ่มข้อมูล (มี NULL)
mysql> INSERT INTO DemoTable1805 VALUES('Chris', NULL);
mysql> INSERT INTO DemoTable1805 VALUES('David', 'Mike');
mysql> INSERT INTO DemoTable1805 VALUES(NULL, 'Mike');
3. แสดงข้อมูลก่อนอัปเดต
mysql> SELECT * FROM DemoTable1805; +-------+-------+ | Name1 | Name2 | +-------+-------+ | Chris | NULL | | David | Mike | | NULL | Mike | +-------+-------+
4. UPDATE: ตั้ง Name1 = COALESCE(Name1, Name2)
mysql> UPDATE DemoTable1805 SET Name1 = COALESCE(Name1, Name2); Query OK, 1 row affected (0.00 sec) Rows matched: 3 Changed: 1 Warnings: 0
การทำงาน:
- แถว 1: Name1='Chris' (NOT NULL) → COALESCE คืน 'Chris' → ไม่เปลี่ยน
- แถว 2: Name1='David' (NOT NULL) → COALESCE คืน 'David' → ไม่เปลี่ยน
- แถว 3: Name1=NULL → COALESCE คืน Name2='Mike' → อัปเดตเป็น 'Mike'
5. ผลลัพธ์หลังอัปเดต
mysql> SELECT * FROM DemoTable1805; +-------+-------+ | Name1 | Name2 | +-------+-------+ | Chris | NULL | | David | Mike | | Mike | Mike | +-------+-------+
COALESCE vs IFNULL
| ฟังก์ชัน | รองรับอาร์กิวเมนต์ | Standard | ตัวอย่าง |
|---|---|---|---|
COALESCE(v1, v2, v3, ...) | 2 ตัวขึ้นไป (Unlimited) | ANSI SQL | COALESCE(a, b, c, 'default') |
IFNULL(v1, v2) | 2 ตัวเท่านั้น | MySQL Specific | IFNULL(a, b) |