MySQL का CASE स्टेटमेंट कंडीशनल लॉजिक लागू करने और कस्टम आउटपुट उत्पन्न करने का शक्तिशाली तरीका है। इसका उपयोग रिपोर्टिंग, ग्रेडिंग, और डेटा ट्रांसफॉर्मेशन के लिए किया जाता है।
उदाहरण: मार्क्स के आधार पर परिणाम संदेश
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1916 (
StudentName VARCHAR(20),
StudentMarks INT
);
डेटा इन्सर्ट करें:
mysql> INSERT INTO DemoTable1916 VALUES
('Chris', 59), ('David', 89), ('Sam', 94), ('Mike', 75), ('Carol', 69);
CASE स्टेटमेंट के साथ क्वेरी:
mysql> SELECT StudentName,
CASE
WHEN StudentMarks > 70 THEN 'Good Marks'
ELSE 'Not Good Marks'
END AS Result
FROM DemoTable1916;
आउटपुट:
+-------------+----------------+ | StudentName | Result | +-------------+----------------+ | Chris | Not Good Marks | | David | Good Marks | | Sam | Good Marks | | Mike | Good Marks | | Carol | Not Good Marks | +-------------+----------------+
CASE स्टेटमेंट के दो रूप
1. सरल CASE (मान की तुलना)
CASE column
WHEN value1 THEN result1
WHEN value2 THEN result2
ELSE default_result
END
2. खोजा गया CASE (शर्तों का मूल्यांकन) - ऊपर उपयोग किया गया
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END
उन्नत उदाहरण: ग्रेड सिस्टम
SELECT StudentName, StudentMarks,
CASE
WHEN StudentMarks >= 90 THEN 'A+'
WHEN StudentMarks >= 80 THEN 'A'
WHEN StudentMarks >= 70 THEN 'B'
WHEN StudentMarks >= 60 THEN 'C'
ELSE 'F'
END AS Grade
FROM DemoTable1916;
UPDATE में CASE का उपयोग
UPDATE students
SET status = CASE
WHEN marks >= 40 THEN 'Pass'
ELSE 'Fail'
END;
बेस्ट प्रैक्टिस
- ELSE क्लॉज़: हमेशा ELSE शामिल करें ताकि NULL परिणाम न मिले
- क्रम मायने रखता है: शर्तों का मूल्यांकन क्रम से होता है, पहली मिलान वाली लागू होती है
- पढ़ने योग्यता: जटिल लॉजिक के लिए इंडेंटेशन और फॉर्मेटिंग का उपयोग करें
- इंडेक्स उपयोग: CASE कॉलम पर इंडेक्स उपयोग नहीं करता; WHERE क्लॉज़ में शर्तें बेहतर हैं
CASE स्टेटमेंट SQL को घोषणात्मक और पठनीय बनाता है, एप्लिकेशन कोड में लॉजिक ले जाने की आवश्यकता कम करता है।