परिचय
MySQL में CASE स्टेटमेंट का उपयोग करके शर्तीय तर्क (conditional logic) लागू किया जा सकता है। यह उदाहरण दिखाता है कि जब पहला कॉलम NULL हो तो NULL लौटाएं, अन्यथा दूसरा कॉलम लौटाएं।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> Name VARCHAR(20),
-> Marks1 INT,
-> Marks2 INT
-> );
Query OK, 0 rows affected (0.72 sec)
mysql> INSERT INTO DemoTable VALUES('Chris', 45, NULL);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('David', NULL, 78);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('Bob', 67, 98);
Query OK, 1 row affected (0.14 sec)
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------+--------+--------+
| Name | Marks1 | Marks2 |
+-------+--------+--------+
| Chris | 45 | NULL |
| David | NULL | 78 |
| Bob | 67 | 98 |
+-------+--------+--------+
3 rows in set (0.00 sec)
CASE WHEN क्वेरी
mysql> SELECT *,
-> (CASE WHEN Marks1 IS NULL THEN NULL ELSE Marks2 END) AS Value
-> FROM DemoTable;
परिणाम
+-------+--------+--------+-------+
| Name | Marks1 | Marks2 | Value |
+-------+--------+--------+-------+
| Chris | 45 | NULL | NULL |
| David | NULL | 78 | NULL |
| Bob | 67 | 98 | 98 |
+-------+--------+--------+-------+
3 rows in set (0.00 sec)
व्याख्या
| Name | Marks1 | Marks2 | शर्त | परिणाम |
|---|---|---|---|---|
| Chris | 45 | NULL | Marks1 IS NULL? FALSE | Marks2 = NULL |
| David | NULL | 78 | Marks1 IS NULL? TRUE | NULL |
| Bob | 67 | 98 | Marks1 IS NULL? FALSE | Marks2 = 98 |
CASE सिंटैक्स वेरिएंट्स
-- सरल CASE (मान की तुलना)
CASE expr WHEN val1 THEN result1 WHEN val2 THEN result2 ELSE default END
-- खोजा गया CASE (शर्तों का मूल्यांकन)
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE default END
समान परिणाम के लिए अन्य फंक्शन्स
IF(Marks1 IS NULL, NULL, Marks2)- सरल IF फंक्शनCOALESCE(Marks1, Marks2)- पहला नॉन-NULL मान (यहां अलग तर्क)NULLIF(Marks1, Marks1)- हमेशा NULL (उपयोगी नहीं)
CASE स्टेटमेंट सबसे लचीला है और जटिल शर्तीय तर्क के लिए मानक SQL तरीका है।