কম্পিউটার টিউটোরিয়াল

MySQL CASE স্টেটমেন্ট কখন NULL ফেরত দেয়?

CASE স্টেটমেন্টে কোনো শর্ত মিল না হলে ELSE ক্লজের ফলাফল ফেরত দেয়। কিন্তু ELSE ক্লজ না থাকলে NULL ফেরত দেয়।

উদাহরণ

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            |
+-----------------+

Students টেবিল দিয়ে উদাহরণ — কোনো শিক্ষার্থী 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 |
+------+------+-------+--------+--------+------+-----------+------+

WI এর জন্য ELSE নেই, তাই NULL ফেরত দিয়েছে।

  1. MySQL-এ SELECT স্টেটমেন্টের ভেতরে CASE স্টেটমেন্ট ব্যবহার

  2. MySQL CASE স্টেটমেন্ট WITH ক্লজের সাথে বাস্তবায়ন

  3. MySQL-এ TINYINT কলামে <> 1 বা IS NULL শর্ত দিয়ে রেকর্ড ফিল্টার করুন

  4. MySQL-এ CASE WHEN দিয়ে শর্তভিত্তিক কাউন্ট করা (Conditional Aggregation)