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

MySQL में CASE स्टेटमेंट से SELECT परिणाम में मान बदलें (Replace)

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
  1. - MySQL SELECT क्वेरी में ALIAS (उपनाम) कैसे उपयोग करें

    AS कीवर्ड के साथ कॉलम और टेबल का उपनाम देना MySQL में कॉलम या टेबल को अस्थायी नाम (उपनाम) देने के लिए AS कीवर्ड का उपयोग करें। यह वैकल्पिक है लेकिन पठनीयता बढ़ाता है। टेबल और डेटा CREATE TABLE DemoTable ( Name VARCHAR(100) ); Query OK, 0 rows affected (0.51 sec) INSERT INTO DemoTable VALUES(

  1. - MySQL क्वेरी में 'Empty set' को कैसे बदलें?

    परिचय जब कोई क्वेरी कोई पंक्ति नहीं लौटाती (Empty set), और आप इसके बजाय एक डिफ़ॉल्ट मान दिखाना चाहते हैं, तो MySQL का COALESCE() फंक्शन उपयोगी है। यह पहला नॉन-NULL मान लौटाता है। उदाहरण: टेबल बनाना और डेटा डालना ); Query OK, 0 rows affected (1.64 sec) INSERT INTO DemoTable VALUES(78); Query OK,

  1. - MySQL में महीने के अनुसार रिकॉर्ड कैसे चुनें (SELECT by Month)?

    MySQL में MONTH() फ़ंक्शन का उपयोग करके दिनांक कॉलम से महीना निकालकर रिकॉर्ड फ़िल्टर किए जा सकते हैं। यह मासिक रिपोर्ट और विश्लेषण के लिए आवश्यक है। सिंटैक्स SELECT * FROM table_name WHERE MONTH(date_column) = month_number; उदाहरण तालिका बनाएं और डेटा डालें: mysql> CREATE TABLE DemoTable (Ship