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

CASE Statement คืน NULL เมื่อไหน

CASE คืน NULL: ไม่มี ELSE และไม่มี WHEN ตรง

ตัวอย่าง: ไม่มี WHEN ตรง, ไม่มี ELSE

mysql> SELECT CASE 100 
           WHEN 150 THEN 'It is matched'
           WHEN 200 THEN 'It is not matched'
           END AS 'It Returns NULL';
+-----------------+
| It Returns NULL |
+-----------------+
| NULL            |
+-----------------+

ตัวอย่าง: SUM(CASE...) โดยไม่มี ELSE

mysql> SELECT 
    SUM(CASE WHEN country = 'USA' THEN 1 ELSE 0 END) AS USA,
    SUM(CASE WHEN country = 'UK' THEN 1 ELSE 0 END) AS UK,
    SUM(CASE WHEN country = 'INDIA' THEN 1 ELSE 0 END) AS INDIA,
    SUM(CASE WHEN country = 'Russia' THEN 1 ELSE 0 END) AS Russia,
    SUM(CASE WHEN country = 'France' THEN 1 ELSE 0 END) AS France,
    SUM(CASE WHEN country = 'NZ' THEN 1 ELSE 0 END) AS NZ,
    SUM(CASE WHEN country = 'Australia' THEN 1 ELSE 0 END) AS Australia,
    SUM(CASE WHEN country = 'WI' THEN 1 END) AS WI  -- ไม่มี ELSE
FROM Students;

+------+------+-------+--------+--------+------+-----------+------+
| USA  | UK   | INDIA | Russia | France | NZ   | Australia | WI   |
+------+------+-------+--------+--------+------+-----------+------+
| 2    | 1    | 2     | 1      | 1      | 1    | 1         | NULL |
+------+------+-------+--------+--------+------+-----------+------+

สรุป

  • มี ELSE → คืนค่า ELSE
  • ไม่มี ELSE และไม่มี WHEN ตรง → NULL
  • แนะนำ: ใส่ ELSE เสมอเพื่อความชัดเจน

Syntax แบบ Searched CASE

CASE 
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END