MySQL में IF() फंक्शन का उपयोग करके SELECT क्वेरी में 1/0 को 'Y'/'N' में बदल सकते हैं। यह MySQL-विशिष्ट फंक्शन है (ANSI SQL नहीं)।
सिंटैक्स
SELECT IF(yourColumn, 'Y', 'N') AS converted_column FROM yourTableName;
IF(condition, true_value, false_value)
condition- TRUE/FALSE मूल्यांकन (0=NULL=FALSE, अन्य=TRUE)true_value- शर्त TRUE होने परfalse_value- शर्त FALSE/NULL होने पर
उदाहरण के साथ समझें
टेबल बनाएं:
CREATE TABLE changeValuefrom1toY (
Id INT NOT NULL AUTO_INCREMENT,
isValidAddress TINYINT(1),
PRIMARY KEY(Id)
);
रिकॉर्ड डालें:
INSERT INTO changeValuefrom1toY(isValidAddress) VALUES(1);
INSERT INTO changeValuefrom1toY(isValidAddress) VALUES(0);
INSERT INTO changeValuefrom1toY(isValidAddress) VALUES(1);
INSERT INTO changeValuefrom1toY(isValidAddress) VALUES(1);
INSERT INTO changeValuefrom1toY(isValidAddress) VALUES(1);
INSERT INTO changeValuefrom1toY(isValidAddress) VALUES(0);
INSERT INTO changeValuefrom1toY(isValidAddress) VALUES(1);
सभी रिकॉर्ड देखें:
SELECT * FROM changeValuefrom1toY;
आउटपुट:
+----+----------------+
| Id | isValidAddress |
+----+----------------+
| 1 | 1 |
| 2 | 0 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
| 6 | 0 |
| 7 | 1 |
+----+----------------+
IF() से 1 को 'Y' और 0 को 'N' में बदलें
SELECT IF(isValidAddress, 'Y', 'N') AS Answer FROM changeValuefrom1toY;
परिणाम:
+--------+
| Answer |
+--------+
| Y |
| N |
| Y |
| Y |
| Y |
| N |
| Y |
+--------+
व्याख्या
isValidAddress = 1→ TRUE → 'Y'isValidAddress = 0→ FALSE → 'N'isValidAddress = NULL→ FALSE → 'N' (NULL भी FALSE है)
IF() vs CASE तुलना
| विशेषता | IF() | CASE |
|---|---|---|
| सिंटैक्स | IF(cond, true, false) | CASE WHEN cond THEN true ELSE false END |
| पोर्टेबिलिटी | केवल MySQL | ANSI SQL (सभी DB) |
| पठनीयता | सरल शर्तों के लिए अच्छी | जटिल शर्तों के लिए बेहतर |
| नेस्टिंग | मुश्किल (IF(IF(...))) | आसान (CASE WHEN...WHEN...) |
| NULL हैंडलिंग | NULL=FALSE | स्पष्ट IS NULL जांच |
IF() के अन्य उदाहरण
-- NULL को डिफॉल्ट से बदलें
SELECT IF(column IS NULL, 'Default', column) FROM table;
-- एकाधिक शर्तें (नेस्टेड IF - पढ़ने में कठिन)
SELECT IF(score >= 90, 'A', IF(score >= 80, 'B', IF(score >= 70, 'C', 'F'))) AS grade FROM students;
-- CASE में समान (बेहतर)
SELECT CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'F'
END AS grade
FROM students;
नोट
IF()MySQL-विशिष्ट है; पोर्टेबल कोड के लिएCASEउपयोग करें- बूलियन कॉलम (TINYINT(1)) पर सीधे काम करता है
- परिणाम टाइप: दोनों ब्रांच के टाइप से निर्धारित (स्ट्रिंग/संख्या मिश्रण संभव)
- स्टोर्ड प्रोसीजर में
IF ... THEN ... END IF(स्टेटमेंट) अलग हैIF()(फंक्शन) से