Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में CASE स्टेटमेंट से छात्र अंकों पर कस्टम संदेश कैसे सेट करें?

MySQL में CASE स्टेटमेंट का उपयोग करके छात्रों के अंकों (Marks) के आधार पर कस्टम परिणाम संदेश (जैसे 'Good Marks', 'Not Good Marks') उत्पन्न करें। यह ग्रेडिंग, रिपोर्टिंग, और सशर्त डेटा लेबलिंग के लिए मानक दृष्टिकोण है।

उदाहरण: 40 अंक थ्रेशोल्ड पर संदेश

डेमो टेबल बनाएं:

mysql> CREATE TABLE DemoTable1952 (Marks INT);

डेटा इन्सर्ट करें:

mysql> INSERT INTO DemoTable1952 VALUES (35), (65), (55), (39);

डेटा:

+-------+
| Marks |
+-------+
| 35    |
| 65    |
| 55    |
| 39    |
+-------+

CASE स्टेटमेंट के साथ क्वेरी:

mysql> SELECT 
    CASE 
        WHEN Marks > 40 THEN 'Good Marks'
        ELSE 'Not Good Marks'
    END AS Result
FROM DemoTable1952;

आउटपुट:

+----------------+
| Result         |
+----------------+
| Not Good Marks |
| Good Marks     |
| Good Marks     |
| Not Good Marks |
+----------------+

CASE स्टेटमेंट प्रकार

1. खोजा गया CASE (Searched CASE) - ऊपर उपयोग किया गया

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

प्रत्येक WHEN एक बूलियन एक्सप्रेशन है; क्रम मायने रखता है।

2. सरल CASE (Simple CASE)

CASE Marks
    WHEN 100 THEN 'Perfect'
    WHEN 0 THEN 'Zero'
    ELSE 'Other'
END

कॉलम मान की विशिष्ट मानों से तुलना करता है।

उन्नत ग्रेडिंग उदाहरण

SELECT Marks,
    CASE
        WHEN Marks >= 90 THEN 'A+ (Excellent)'
        WHEN Marks >= 80 THEN 'A (Very Good)'
        WHEN Marks >= 70 THEN 'B (Good)'
        WHEN Marks >= 60 THEN 'C (Average)'
        WHEN Marks >= 40 THEN 'D (Pass)'
        ELSE 'F (Fail)'
    END AS Grade
FROM DemoTable1952;

UPDATE में CASE का उपयोग

UPDATE students
SET result = CASE
    WHEN marks >= 40 THEN 'Pass'
    ELSE 'Fail'
END,
grade = CASE
    WHEN marks >= 90 THEN 'A'
    WHEN marks >= 75 THEN 'B'
    WHEN marks >= 60 THEN 'C'
    ELSE 'D'
END;

एग्रीगेशन में CASE (पिवट/क्रॉस-टैब)

SELECT 
    COUNT(*) AS total,
    SUM(CASE WHEN Marks >= 40 THEN 1 ELSE 0 END) AS passed,
    SUM(CASE WHEN Marks < 40 THEN 1 ELSE 0 END) AS failed
FROM DemoTable1952;

बेस्ट प्रैक्टिस

  • हमेशा ELSE: ELSE न होने पर NULL लौटाता है
  • क्रम: पहली मिलान वाली शर्त लागू होती है; विशिष्ट से सामान्य क्रम में लिखें
  • डेटा प्रकार: सभी THEN परिणाम संगत प्रकार के होने चाहिए
  • पढ़ने योग्यता: इंडेंटेशन और लाइन ब्रेक का उपयोग करें

प्रदर्शन

  • CASE एक्सप्रेशन इंडेक्स उपयोग नहीं रोकता (WHERE में न होने पर)
  • बड़े परिणाम सेट पर CPU ओवरहेड न्यूनतम
  • जटिल CASE को एप्लिकेशन लेयर पर ले जाने पर विचार करें

CASE स्टेटमेंट SQL को घोषणात्मक बनाता है और एप्लिकेशन कोड में कंडीशनल लॉजिक की आवश्यकता कम करता है।

  1. - MySQL में IF() से NULL मानों के आधार पर कस्टम टेक्स्ट कैसे दिखाएं?

    MySQL में किसी कॉलम के NULL मानों के आधार पर कस्टम टेक्स्ट प्रदर्शित करने के लिए IF() फंक्शन (या CASE) का उपयोग करें। यह रिपोर्टिंग, UI डिस्प्ले, और डेटा एक्सपोर्ट में Not Found जैसे संदेश दिखाने के लिए उपयोगी है। उदाहरण: StudentName NULL होने पर कस्टम संदेश डेमो टेबल बनाएं: mysql> CREATE TABL

  1. - MySQL में IF स्टेटमेंट से ENUM मानों के लिए कस्टम संदेश सेट करें

    IF() फ़ंक्शन से ENUM Y/N को पठनीय संदेश में बदलें ENUM कॉलम के Y/N मानों को Active Member/Not Active Member जैसे कस्टम संदेश में बदलने के लिए IF() का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1992 ( ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY, ClientName varchar(20),

  1. - MySQL में IF स्टेटमेंट और यूजर-डिफाइंड वेरिएबल से कस्टम संदेश सेट करें

    SELECT INTO वेरिएबल और IF() से शर्ती संदेश उत्पन्न करें कुल योग की गणना करके उसे वेरिएबल में स्टोर करें, फिर IF() से कस्टम संदेश दिखाएं। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable2008 ( Value int ); Query OK, 0 rows affected (10.59 sec) mysql> insert into DemoTable2008 values(10);