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

ตั้งค่า Default สำหรับค่า NULL ใน MySQL ด้วย COALESCE

การเตรียมข้อมูล

mysql> CREATE TABLE DemoTable1863 (FirstName VARCHAR(20));

mysql> INSERT INTO DemoTable1863 VALUES('Chris'), (NULL), ('David'), (NULL);

ข้อมูลก่อน

+-----------+
| FirstName |
+-----------+
| Chris     |
| NULL      |
| David     |
| NULL      |
+-----------+

ใช้ COALESCE ตั้งค่า Default

mysql> SELECT COALESCE(FirstName, 'UNKNOWN NAME') FROM DemoTable1863;

ผลลัพธ์:

+------------------------------------+
| coalesce(FirstName,'UNKNOWN NAME') |
+------------------------------------+
| Chris                              |
| UNKNOWN NAME                       |
| David                              |
| UNKNOWN NAME                       |
+------------------------------------+

COALESCE vs IFNULL

-- IFNULL: 2 พารามิเตอร์ (MySQL Only)
SELECT IFNULL(FirstName, 'UNKNOWN NAME') FROM DemoTable1863;

-- COALESCE: หลายพารามิเตอร์ (Standard SQL)
SELECT COALESCE(FirstName, MiddleName, LastName, 'UNKNOWN') FROM users;

การตั้งค่า Default แบบถาวร (Schema Level)

ถ้าต้องการ Default จริงในตาราง:

-- ตอนสร้างตาราง
CREATE TABLE users (
    name VARCHAR(50) NOT NULL DEFAULT 'Anonymous'
);

-- หรือ ALTER ตารางมีอยู่
ALTER TABLE users ALTER COLUMN name SET DEFAULT 'Anonymous';

-- หมายเหตุ: DEFAULT ไม่ผลักดันค่า NULL ที่มีอยู่แล้ว
-- ต้อง UPDATE แยก: UPDATE users SET name = 'Anonymous' WHERE name IS NULL;

กรณีใช้งาน COALESCE

  • แสดงผล Report: แทน NULL ด้วยข้อความอ่านง่าย
  • Fallback Chain: COALESCE(phone, email, 'No contact')
  • คำนวณ: COALESCE(bonus, 0) + salary ป้องกัน NULL Propagation
  • JSON: COALESCE(JSON_EXTRACT(doc, '$.field'), 'default')