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