การแทนที่ค่า NULL ด้วย IF() และ IS NULL
เมื่อต้องการเปลี่ยนค่า NULL ในคอลัมน์ให้เป็นค่าอื่น ให้ใช้คำสั่ง UPDATE ร่วมกับฟังก์ชัน IF() และเงื่อนไข IS NULL
รูปแบบคำสั่ง
UPDATE table_name
SET column_name = IF(column_name IS NULL, 'new_value', column_name);
ตัวอย่าง: แทนที่ชื่อที่เป็น NULL ด้วยข้อความแจ้งเตือน
1. สร้างตารางและเพิ่มข้อมูล (รวม NULL)
CREATE TABLE DemoTable (
Name VARCHAR(100)
);
INSERT INTO DemoTable VALUES ('Robert');
INSERT INTO DemoTable VALUES (NULL);
INSERT INTO DemoTable VALUES ('David');
INSERT INTO DemoTable VALUES (NULL);
INSERT INTO DemoTable VALUES ('Robert');
2. ดูข้อมูลก่อนอัปเดต
SELECT * FROM DemoTable;
ผลลัพธ์:
+--------+
| Name |
+--------+
| Robert |
| NULL |
| David |
| NULL |
| Robert |
+--------+
3. อัปเดตค่า NULL ให้เป็น 'Please Enter a Name'
UPDATE DemoTable
SET Name = IF(Name IS NULL, 'Please Enter a Name', Name);
ผลลัพธ์การรัน: Query OK, 2 rows affected (0.09 sec) Rows matched: 5 Changed: 2 Warnings: 0
4. ตรวจสอบข้อมูลหลังอัปเดต
SELECT * FROM DemoTable;
ผลลัพธ์:
+---------------------+
| Name |
+---------------------+
| Robert |
| Please Enter a Name |
| David |
| Please Enter a Name |
| Robert |
+---------------------+
วิธีอื่นๆ ในการจัดการ NULL
ใช้ COALESCE() (แนะนำสำหรับหลายคอลัมน์)
UPDATE DemoTable
SET Name = COALESCE(Name, 'Please Enter a Name');
COALESCE() จะคืนค่าตัวแรกที่ไม่ใช่ NULL ทำงานได้เร็วกว่าและเป็นมาตรฐาน SQL
ใช้ CASE WHEN
UPDATE DemoTable
SET Name = CASE WHEN Name IS NULL THEN 'Please Enter a Name' ELSE Name END;
ข้อสังเกต
IS NULLคือวิธีเดียวที่ตรวจสอบ NULL ได้ถูกต้อง (ไม่ใช่= NULL)- คำสั่ง UPDATE จะเปลี่ยนข้อมูลจริงในตาราง ควรสำรองข้อมูลก่อนรัน
- หากต้องการแค่แสดงผล ไม่ต้องเปลี่ยนข้อมูล ให้ใช้ SELECT ร่วม IF() หรือ COALESCE() แทน