MySQL में NULL मानों को संभालना: IFNULL() और COALESCE()
MySQL में IFNULL() फ़ंक्शन का उपयोग करके आप NULL मानों को डिफ़ॉल्ट मान से बदल सकते हैं। यह लेख दिखाता है कि कैसे NULL मानों को 1 से अपडेट करें और उन्हें प्रदर्शित करें।
टेबल बनाना
mysql> CREATE TABLE DemoTable1963 (
-> Counter INT
-> );
Query OK, 0 rows affected (0.00 sec)
NULL मानों सहित डेटा डालना
mysql> INSERT INTO DemoTable1963 VALUES (20);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1963 VALUES (NULL);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1963 VALUES (99);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1963 VALUES (49);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1963 VALUES (NULL);
Query OK, 1 row affected (0.00 sec)
मूल डेटा
mysql> SELECT * FROM DemoTable1963;
+---------+
| Counter |
+---------+
| 20 |
| NULL |
| 99 |
| 49 |
| NULL |
+---------+
5 rows in set (0.00 sec)
NULL मानों को 1 से अपडेट करना (IFNULL का उपयोग करके)
mysql> UPDATE DemoTable1963
-> SET Counter = IFNULL(Counter, 0) + 1
-> WHERE Counter IS NULL;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
अपडेट के बाद डेटा
mysql> SELECT * FROM DemoTable1963;
+---------+
| Counter |
+---------+
| 20 |
| 1 | -- NULL था, अब 1
| 99 |
| 49 |
| 1 | -- NULL था, अब 1
+---------+
5 rows in set (0.00 sec)
क्वेरी विश्लेषण
IFNULL(Counter, 0): यदि Counter NULL है तो 0 लौटाता है, अन्यथा Counter मान+ 1: परिणाम में 1 जोड़ता हैWHERE Counter IS NULL: केवल NULL पंक्तियों को अपडेट करता है (दक्षता के लिए)
केवल प्रदर्शन के लिए (डेटा बदले बिना)
SELECT
Counter,
IFNULL(Counter, 1) AS DisplayValue
FROM DemoTable1963;
परिणाम
+---------+--------------+
| Counter | DisplayValue |
+---------+--------------+
| 20 | 20 |
| NULL | 1 |
| 99 | 99 |
| 49 | 49 |
| NULL | 1 |
+---------+--------------+
IFNULL vs COALESCE vs CASE
| फ़ंक्शन | तर्क | मानक SQL | विवरण |
|---|---|---|---|
| IFNULL(expr, val) | 2 | नहीं (MySQL) | सरल NULL प्रतिस्थापन |
| COALESCE(v1, v2, ...) | 2+ | हाँ (ANSI) | पहला गैर-NULL लौटाता है |
| CASE WHEN ... | लचीला | हाँ | जटिल तर्क |
COALESCE उदाहरण (अधिक लचीला)
-- पहला गैर-NULL मान चुनें
SELECT COALESCE(Phone, Email, 'No Contact') AS ContactInfo FROM Users;
-- एकाधिक फॉलबैक
SELECT COALESCE(Commission, Bonus, Salary * 0.1, 0) AS Incentive FROM Employees;
NULL-सुरक्षित तुलना ऑपरेटर
-- NULL = NULL अज्ञात है (TRUE नहीं)
SELECT NULL = NULL; -- NULL
-- NULL-सुरक्षित समानता
SELECT NULL <=> NULL; -- 1 (TRUE)
-- WHERE क्लॉज में उपयोग
SELECT * FROM Table WHERE Col <=> NULL; -- NULL मान ढूंढता है
अन्य सामान्य NULL संचालन
-- NULL को 0 के रूप में गणना में उपयोग
SELECT SUM(IFNULL(Amount, 0)) FROM Transactions;
-- NULL को खाली स्ट्रिंग के रूप में संयोजन में
SELECT CONCAT(FirstName, ' ', IFNULL(MiddleName, ''), ' ', LastName) FROM Users;
-- शर्तीय अपडेट
UPDATE Table SET Col = IFNULL(Col, 0) + 1 WHERE Col IS NULL OR Col < 100;
सर्वोत्तम अभ्यास
- डेटा प्रकार सुसंगतता बनाए रखें:
IFNULL(int_col, 0)नहींIFNULL(int_col, '0') - प्रदर्शन के लिए WHERE क्लॉज में
IS NULLका उपयोग करें (इंडेक्स उपयोग कर सकता है) - स्कीमा डिज़ाइन में NOT NULL और डिफ़ॉल्ट मानों पर विचार करें
- पोर्टेबल कोड के लिए
COALESCEपसंद करें