Computer >> Máy Tính >  >> Lập trình >> MySQL

Trong điều kiện nào, câu lệnh MySQL CASE trả về NULL?


Như chúng ta biết rằng nếu không có so sánh hoặc điều kiện nào là đúng thì câu lệnh CASE trả về kết quả được chỉ định sau ELSE tuyên bố. Nhưng điều gì sẽ xảy ra nếu không có ELSE thì trong trường hợp này, câu lệnh CASE sẽ trả về NULL. Sau đây là một ví dụ để chứng minh điều đó.

Ví dụ

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            |
+-----------------+
1 row in set (0.00 sec)

Truy vấn bên dưới, sử dụng dữ liệu từ bảng 'Sinh viên', trả về NULL vì không sinh viên nào thuộc quốc gia WI.

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
    -> From Students;
+------+------+-------+--------+--------+------+-----------+------+
| USA  | UK   | INDIA | Russia | France | NZ   | Australia | WI   |
+------+------+-------+--------+--------+------+-----------+------+
| 2    | 1    | 2     | 1      | 1      | 1    | 1         | NULL |
+------+------+-------+--------+--------+------+-----------+------+
1 row in set (0.00 sec)