MySQL如何处理枚举的空值和空值?

仅当未将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)
猜你喜欢