MySQL में IFNULL() फंक्शन का उपयोग करके क्वेरी का परिणाम NULL होने पर डिफ़ॉल्ट मान लौटाएं।
सिंटैक्स
SELECT IFNULL((subquery), 'default_value') AS result;
उदाहरण
टेबल बनाना
mysql> create table IfNullDemo ( -> Id int, -> Name varchar(100) -> ); Query OK, 0 rows affected (0.60 sec)
रिकॉर्ड डालना
mysql> insert into IfNullDemo values(1,'John'); mysql> insert into IfNullDemo values(200,'Sam'); mysql> insert into IfNullDemo values(204,'Carol'); mysql> insert into IfNullDemo values(510,'Johnson');
मौजूदा ID के लिए (सत्य स्थिति)
mysql> select ifnull((select Id from IfNullDemo where Id = 200), 'No Result Found') As ResultFound;
+-------------+ | ResultFound | +-------------+ | 200 | +-------------+
मौजूद न होने वाले ID के लिए (असत्य स्थिति)
mysql> select ifnull((select Id from IfNullDemo where Id = 400), 'No Result Found') As ResultFound;
+-----------------+ | ResultFound | +-----------------+ | No Result Found | +-----------------+
IFNULL vs COALESCE vs CASE
| फंक्शन | पैरामीटर | मानक | विवरण |
|---|---|---|---|
| IFNULL(expr, val) | 2 | MySQL-विशिष्ट | सरल, दो मान |
| COALESCE(v1, v2, ...) | 2+ | ANSI SQL | पहला गैर-NULL लौटाता है |
| CASE WHEN ... THEN ... ELSE ... END | लचीला | ANSI SQL | जटिल शर्तों के लिए |
व्यावहारिक उदाहरण
-- COALESCE के साथ एकाधिक फॉलबैक SELECT COALESCE(phone, email, 'संपर्क जानकारी नहीं') AS contact FROM users; -- CASE के साथ शर्तें SELECT CASE WHEN COUNT(*) > 0 THEN 'मिला' ELSE 'नहीं मिला' END AS status FROM users WHERE id = 999; -- एग्रीगेट में NULL हैंडलिंग SELECT IFNULL(SUM(amount), 0) AS total FROM orders WHERE user_id = 123;
नोट
IFNULLकेवल NULL मान पर फॉलबैक करता है, खाली स्ट्रिंग या 0 पर नहीं- सबक्वेरी एकल मान लौटानी चाहिए (स्केलर सबक्वेरी)
- प्रदर्शन के लिए इंडेक्स सुनिश्चित करें