MySQL में किसी भी अंकगणितीय गणना में यदि एक आर्गुमेंट NULL है, तो परिणाम हमेशा NULL होता है। NULL "अज्ञात मान" दर्शाता है, और अज्ञात के साथ कोई भी गणना अज्ञात ही रहती है।
उदाहरण - विभिन्न ऑपरेशंस:
mysql> Select 10*NULL;
+---------+
| 10*NULL |
+---------+
| NULL |
+---------+
1 row in set (0.12 sec)
mysql> Select 10+NULL;
+---------+
| 10+NULL |
+---------+
| NULL |
+---------+
1 row in set (0.00 sec)
mysql> Select 10-NULL;
+---------+
| 10-NULL |
+---------+
| NULL |
+---------+
1 row in set (0.07 sec)
mysql> Select 10/NULL;
+---------+
| 10/NULL |
+---------+
| NULL |
+---------+
1 row in set (0.00 sec)
सभी अंकगणितीय ऑपरेटर प्रभावित:
| ऑपरेशन | उदाहरण | परिणाम |
|---|---|---|
| जोड़ (+) | 5 + NULL | NULL |
| घटाव (-) | 5 - NULL | NULL |
| गुणा (*) | 5 * NULL | NULL |
| भाग (/) | 5 / NULL | NULL |
| मॉड्यूलो (%) | 5 % NULL | NULL |
| तुलना (=, <, >) | 5 = NULL | NULL (TRUE/FALSE नहीं) |
NULL हैंडलिंग समाधान:
-- NULL को 0 से बदलकर गणना
SELECT COALESCE(price, 0) * quantity FROM products;
SELECT IFNULL(price, 0) * quantity FROM products; -- MySQL विशिष्ट
-- NULL-सेफ तुलना
SELECT * FROM products WHERE price <=> NULL; -- NULL मान वाली पंक्तियां
एग्रीगेट फंक्शन व्यवहार:
SUM(),AVG(),MIN(),MAX()- NULL मानों को अनदेखा करते हैंCOUNT(*)- सभी पंक्तियां गिनता है (NULL सहित)COUNT(col)- केवल नॉन-NULL मान गिनता है
याद रखें: NULL = NULL FALSE नहीं, NULL है। NULL <=> NULL TRUE है।