कॉलम को 'NOT NULL' घोषित करने का अर्थ है कि यह कॉलम NULL मान नहीं बल्कि शून्य (0) स्वीकार करेगा और एक खाली स्ट्रिंग अपने आप में एक मान है। इसलिए कोई समस्या नहीं होगी यदि हम शून्य या खाली स्ट्रिंग को एक MySQL कॉलम में सम्मिलित करना चाहते हैं जिसे NOT NULL के रूप में परिभाषित किया गया है। 0 और खाली स्ट्रिंग की NULL से तुलना करने से यह स्पष्ट हो जाएगा -
mysql> Select 0 IS NULL, 0 IS NOT NULL; +-----------+---------------+ | 0 IS NULL | 0 IS NOT NULL | +-----------+---------------+ | 0 | 1 | +-----------+---------------+ 1 row in set (0.00 sec)
उपरोक्त परिणाम सेट से पता चलता है कि शून्य (0) न्यूल नहीं है। इसका मतलब है कि शून्य (0) अपने आप में एक मान है क्योंकि जैसा कि हम जानते हैं कि NULL का मतलब NO VALUE है।
mysql> Select '' IS NULL, '' IS NOT NULL; +------------+----------------+ | '' IS NULL | '' IS NOT NULL | +------------+----------------+ | 0 | 1 | +------------+----------------+ 1 row in set (0.00 sec)
उपरोक्त परिणाम सेट से पता चलता है कि खाली स्ट्रिंग ('') NULL नहीं है। इसका मतलब है कि खाली स्ट्रिंग ('') अपने आप में एक मान है क्योंकि जैसा कि हम जानते हैं कि NULL का मतलब NO VALUE है।
उदाहरण
mysql> create table test(id int NOT NULL, Name Varchar(10)); Query OK, 0 rows affected (0.19 sec) mysql> Insert into test6(id, name) values('1', 'Gaurav'),('0','Rahul'),('','Aarav'); Query OK, 3 rows affected, 1 warning (0.08 sec) Records: 3 Duplicates: 0 Warnings: 1 Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 3 mysql> Select * from test; +----+--------+ | id | Name | +----+--------+ | 1 | Gaurav | | 0 | Rahul | | 0 | Aarav | +----+--------+ 3 rows in set (0.00 sec)
उपरोक्त परिणाम सेट से, यह देखा जा सकता है कि हम शून्य (0) एक खाली स्ट्रिंग ('') को एक कॉलम में सम्मिलित कर सकते हैं जिसे NULL के रूप में घोषित किया गया है।