MySQL CASE WHEN THEN ELSE END से क्वेरी परिणाम में मान ट्रांसफॉर्म/रिप्लेस करना
सिंटैक्स:
SELECT yourColumnName1, yourColumnName2, ...,
CASE WHEN yourColumnName = value1 THEN 'replacement1'
WHEN yourColumnName = value2 THEN 'replacement2'
...
ELSE 'default_replacement'
END AS anyVariableName
FROM yourTableName;
व्यावहारिक उदाहरण
1. टेबल बनाएं (बूलियन जैसा कॉलम):
mysql> CREATE TABLE selectReturnDemo (
-> Id INT,
-> Name VARCHAR(100),
-> isGreaterthan18 TINYINT(1)
-> );
Query OK, 0 rows affected (0.62 sec)
2. डेटा डालें (0/1 मान):
mysql> INSERT INTO selectReturnDemo VALUES(1,'Carol',0);
mysql> INSERT INTO selectReturnDemo VALUES(2,'Bob',1);
mysql> INSERT INTO selectReturnDemo VALUES(3,'Mike',1);
mysql> INSERT INTO selectReturnDemo VALUES(4,'David',0);
mysql> INSERT INTO selectReturnDemo VALUES(5,'Adam',1);
3. मूल डेटा:
+------+-------+-----------------+
| Id | Name | isGreaterthan18 |
+------+-------+-----------------+
| 1 | Carol | 0 |
| 2 | Bob | 1 |
| 3 | Mike | 1 |
| 4 | David | 0 |
| 5 | Adam | 1 |
+------+-------+-----------------+
5 rows in set (0.00 sec)
4. CASE से 0/1 को 'false'/'true' में बदलें:
mysql> SELECT Id, Name,
-> CASE WHEN isGreaterthan18 = 1 THEN 'true'
-> ELSE 'false'
-> END AS AgeIsGreaterthan18
-> FROM selectReturnDemo;
+------+-------+--------------------+
| Id | Name | AgeIsGreaterthan18 |
+------+-------+--------------------+
| 1 | Carol | false |
| 2 | Bob | true |
| 3 | Mike | true |
| 4 | David | false |
| 5 | Adam | true |
+------+-------+--------------------+
5 rows in set (0.00 sec)
CASE के दो रूप:
सरल CASE (मान की तुलना):
CASE column_name
WHEN value1 THEN result1
WHEN value2 THEN result2
ELSE default_result
END
खोजा गया CASE (शर्तों की तुलना):
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END
उन्नत उदाहरण:
एकाधिक शर्तें:
SELECT name, score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END AS grade
FROM students;
NULL हैंडलिंग:
CASE
WHEN column IS NULL THEN 'Unknown'
WHEN column = '' THEN 'Empty'
ELSE column
END
संबंधित फंक्शन:
IF(condition, true_val, false_val) — सरल द्विआधारी केस
IFNULL(expr, default) — NULL रिप्लेसमेंट
COALESCE() — पहला नॉन-NULL
NULLIF(expr1, expr2) — बराबर होने पर NULL