MySQL में IF() फ़ंक्शन टर्नरी ऑपरेटर (?:) के समान काम करता है
C/Java जैसे भाषाओं में टर्नरी ऑपरेटर condition ? val1 : val2 होता है। MySQL में IF(condition, val1, val2) फ़ंक्शन समान कार्य करता है।
सिंटैक्स
IF(शर्त, मान_यदि_सत्य, मान_यदि_असत्य)
उदाहरण
केस 1: शर्त असत्य (3 > 5 गलत)
mysql> SELECT IF(3 > 5, 'Condition is true', 'Condition is not true') AS ConditionalResult;
+-----------------------+ | ConditionalResult | +-----------------------+ | Condition is not true | +-----------------------+
केस 2: शर्त सत्य (3 < 5 सही)
mysql> SELECT IF(3 < 5, 'Condition is true', 'Condition is not true') AS ConditionalResult;
+-------------------+ | ConditionalResult | +-------------------+ | Condition is true | +-------------------+
कॉलम पर उपयोग
SELECT name, IF(age >= 18, 'Adult', 'Minor') AS category FROM users;
नेस्टेड IF (एल्स-इफ)
SELECT score,
IF(score >= 90, 'A',
IF(score >= 80, 'B',
IF(score >= 70, 'C', 'F'))) AS grade
FROM students;
CASE एक्सप्रेशन (अधिक पठनीय जटिल तर्क के लिए)
SELECT score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'F'
END AS grade
FROM students;
IF() बनाम CASE
| विशेषता | IF() | CASE |
|---|---|---|
| सरल शर्त | अच्छा | अच्छा |
| एकाधिक शर्तें | नेस्टेड (पढ़ने में कठिन) | स्पष्ट, पठनीय |
| NULL हैंडलिंग | शर्त NULL → false शाखा | WHEN NULL THEN संभव |
| प्रकार | फ़ंक्शन | एक्सप्रेशन |
नोट्स
IF()MySQL-विशिष्ट है;CASEमानक SQL हैIFNULL()अलग है:IFNULL(expr, val)केवल NULL जांचता है- MySQL 8.0 में
IF()ऑप्टिमाइज़र द्वारा अच्छी तरह से संभाला जाता है