MySQL SELECT क्वेरी में किसी व्यक्तिगत फील्ड के लिए कीज़ को मानों से मैप करने के लिए CASE स्टेटमेंट या IF() फ़ंक्शन का उपयोग करें।
विधि 1: CASE स्टेटमेंट
SELECT yourColumnName1, yourColumnName2, ... N, (CASE WHEN yourColumnName = 1 THEN 'ENABLED' ELSE 'DISABLED' END) AS anyVariableName FROM yourTableName;
विधि 2: IF() फ़ंक्शन
SELECT yourColumnName1, yourColumnName2, ... N, IF(yourColumnName, 'ENABLED', 'DISABLED') AS anyVariableName FROM yourTableName;
उदाहरण के साथ समझें
सबसे पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE MapKeys (
-> Id INT NOT NULL AUTO_INCREMENT,
-> Name VARCHAR(20),
-> isActive BOOLEAN,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.65 sec)
रिकॉर्ड डालें
mysql> INSERT INTO MapKeys(Name, isActive) VALUES('Larry', true);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO MapKeys(Name, isActive) VALUES('David', false);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO MapKeys(Name, isActive) VALUES('Mike', true);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO MapKeys(Name, isActive) VALUES('Carol', false);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO MapKeys(Name, isActive) VALUES('Sam', false);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO MapKeys(Name, isActive) VALUES('Bob', true);
Query OK, 1 row affected (0.19 sec)
सभी रिकॉर्ड देखें
mysql> SELECT * FROM MapKeys;
आउटपुट
+----+-------+----------+ | Id | Name | isActive | +----+-------+----------+ | 1 | Larry | 1 | | 2 | David | 0 | | 3 | Mike | 1 | | 4 | Carol | 0 | | 5 | Sam | 0 | | 6 | Bob | 1 | +----+-------+----------+ 6 rows in set (0.00 sec)
CASE स्टेटमेंट से मैपिंग
mysql> SELECT Id, Name,
-> (CASE WHEN isActive = 1 THEN 'ENABLED' ELSE 'DISABLED' END) AS Status
-> FROM MapKeys;
आउटपुट
+----+-------+----------+ | Id | Name | Status | +----+-------+----------+ | 1 | Larry | ENABLED | | 2 | David | DISABLED | | 3 | Mike | ENABLED | | 4 | Carol | DISABLED | | 5 | Sam | DISABLED | | 6 | Bob | ENABLED | +----+-------+----------+ 6 rows in set (0.00 sec)
IF() फ़ंक्शन से मैपिंग (अधिक संक्षिप्त)
mysql> SELECT Id, Name, IF(isActive, 'ENABLED', 'DISABLED') AS Status FROM MapKeys;
आउटपुट
+----+-------+----------+ | Id | Name | Status | +----+-------+----------+ | 1 | Larry | ENABLED | | 2 | David | DISABLED | | 3 | Mike | ENABLED | | 4 | Carol | DISABLED | | 5 | Sam | DISABLED | | 6 | Bob | ENABLED | +----+-------+----------+ 6 rows in set (0.00 sec)
दोनों विधियां समान परिणाम देती हैं। IF() सरल शर्तों के लिए अधिक संक्षिप्त है, जबकि CASE जटिल बहु-शर्त मैपिंग के लिए बेहतर है।