MySQL एन्यूमरेशन के लिए खाली मानों को तभी स्वीकार करता है जब SQL मोड TRADITIONAL, STRICT_TRANS_TABLES या STRICT_ALL_TABLES के रूप में सेट नहीं होता है। अन्यथा, MySQL खाली मानों को स्वीकार नहीं करेगा और एक त्रुटि फेंकेगा। जैसा कि हम जानते हैं कि प्रत्येक एन्यूमरेशन मान का एक इंडेक्स मान होता है, खाली मान का इंडेक्स मान 0 होगा।
उदाहरण
mysql> SET SQL_MODE ='Traditional'; Query OK, 0 rows affected (0.00 sec) mysql> Insert into result(id, name,grade) values(100, 'Raman', ''); ERROR 1265 (01000): Data truncated for column 'Grade' at row 1
अब, SQL मोड बदलने के बाद हम खाली स्ट्रिंग डाल सकते हैं जैसे:
mysql> Set SQL_MODE =''; Query OK, 0 rows affected (0.00 sec) mysql> Insert into result(id, name, grade) values(100, 'Raman', ''); Query OK, 1 row affected, 1 warning (0.04 sec) mysql> select * from result; +-----+-------+-------+ | Id | Name | Grade | +-----+-------+-------+ | 100 | Raman | | +-----+-------+-------+ 1 row in set (0.00 sec)
MySQL एन्यूमरेशन के लिए NULL मानों को तभी स्वीकार करता है जब हम ENUM कॉलम के साथ NOT NULL निर्दिष्ट नहीं करते हैं। जैसा कि हम जानते हैं कि प्रत्येक एन्यूमरेशन मान का एक इंडेक्स मान होता है, NULL का इंडेक्स मान NULL होता है।
उदाहरण
mysql> Insert into result(id, name, grade) values(101, 'Rahul', NULL); Query OK, 1 row affected (0.04 sec)
उपरोक्त क्वेरी NULL मान डालेगी क्योंकि हम ENUM कॉलम घोषणा में NOT NULL निर्दिष्ट नहीं करते हैं।
mysql> select * from result; +-----+-------+-------+ | Id | Name | Grade | +-----+-------+-------+ | 100 | Raman | | | 101 | Rahul | NULL | +-----+-------+-------+ 2 rows in set (0.00 sec)