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

วิธีอัปเดตเฉพาะค่า NULL ในตาราง MySQL ให้เป็นค่าที่ต้องการ

การแทนที่ค่า 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() แทน