IFNULL() फंक्शन के साथ UPDATE
IFNULL(expr, val) फंक्शन expr NULL होने पर val लौटाता है, अन्यथा expr। UPDATE में उपयोग करके केवल NULL मानों को डिफ़ॉल्ट मान से बदलें।
उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना
mysql> CREATE TABLE DemoTable817(Value INT); Query OK, 0 rows affected (0.53 sec)
रिकॉर्ड्स इन्सर्ट करना (NULL मान सहित)
mysql> INSERT INTO DemoTable817 VALUES(10),(NULL),(20),(NULL); Query OK, 4 rows affected (...)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable817;
+-------+ | Value | +-------+ | 10 | | NULL | | 20 | | NULL | +-------+ 4 rows in set (0.00 sec)
NULL मानों को 0 से अपडेट करने की क्वेरी
mysql> UPDATE DemoTable817 SET Value = IFNULL(Value, 0); Query OK, 2 rows affected (0.17 sec) Rows matched: 4 Changed: 2 Warnings: 0
अपडेट के बाद डेटा देखना
mysql> SELECT * FROM DemoTable817;
+-------+ | Value | +-------+ | 10 | | 0 | | 20 | | 0 | +-------+ 4 rows in set (0.00 sec)
कैसे काम करता है
IFNULL(Value, 0)- यदि Value NULL है तो 0 लौटाता है, अन्यथा Value ही लौटाता हैSET Value = IFNULL(Value, 0)- गैर-NULL मान अपरिवर्तित रहते हैं, NULL 0 बन जाते हैंChanged: 2- केवल 2 रो वास्तव में बदले गए (दो NULL वाले)
संबंधित फंक्शन्स
| फंक्शन | व्यवहार | उदाहरण परिणाम |
|---|---|---|
IFNULL(expr, val) | 2 आर्गुमेंट, MySQL-विशिष्ट | IFNULL(NULL, 0) = 0 |
COALESCE(v1, v2, ...) | एकाधिक आर्गुमेंट, पहला गैर-NULL | COALESCE(NULL, NULL, 5) = 5 |
NULLIF(expr1, expr2) | समान हों तो NULL, अन्यथा expr1 | NULLIF(5, 5) = NULL |
ISNULL(expr) | NULL हो तो 1, अन्यथा 0 | ISNULL(NULL) = 1 |
COALESCE के साथ समान अपडेट
UPDATE DemoTable817 SET Value = COALESCE(Value, 0);
WHERE क्लॉज के साथ (अधिक स्पष्ट)
UPDATE DemoTable817 SET Value = 0 WHERE Value IS NULL;
CASE एक्सप्रेशन के साथ सशर्त अपडेट
UPDATE DemoTable817
SET Value = CASE
WHEN Value IS NULL THEN 0
WHEN Value < 0 THEN ABS(Value)
ELSE Value
END;
डिफ़ॉल्ट मान सेट करना (भविष्य के लिए)
ALTER TABLE DemoTable817 MODIFY Value INT DEFAULT 0;
नोट
IFNULL SELECT में डिस्प्ले के लिए बेहतर है, UPDATE में WHERE Value IS NULL अधिक स्पष्ट और मानक SQL है।