仅当未将SQL模式设置为TRADITIONAL,STRICT_TRANS_TABLES或STRICT_ALL_TABLES时,MySQL才接受用于枚举的空值。否则,MySQL将不接受空值并引发错误。我们知道每个枚举值都有一个索引值,空值将有0个索引值。
mysql> SET SQL_MODE ='Traditional'; 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 =''; mysql> Insert into result(id, name, grade) values(100, 'Raman', ''); mysql> select * from result; +-----+-------+-------+ | Id | Name | Grade | +-----+-------+-------+ | 100 | Raman | | +-----+-------+-------+ 1 row in set (0.00 sec)
仅当我们未在ENUM列中指定NOT NULL时,MySQL才接受NULL值进行枚举。我们知道每个枚举值都有一个索引值,因此NULL的索引值为NULL。
mysql> Insert into result(id, name, grade) values(101, 'Rahul', NULL);
上面的查询将插入NULL值,因为我们没有在ENUM列声明中指定NOT NULL。
mysql> select * from result; +-----+-------+-------+ | Id | Name | Grade | +-----+-------+-------+ | 100 | Raman | | | 101 | Rahul | NULL | +-----+-------+-------+ 2 rows in set (0.00 sec)