MySQL 如何处理枚举类型的空值和null值

MySQL 如何处理枚举类型的空值和null值

MySQL只有在SQL模式未设置为TRADITIONAL、STRICT_TRANS_TABLES或STRICT_ALL_TABLES时,才允许空值作为枚举类型的值。否则,MySQL将会拒绝空值并抛出错误。我们知道每个枚举类型的值都有一个索引值,而空值的索引值为0。

阅读更多:MySQL 教程

示例

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只有在不指定ENUM列的NOT NULL时才允许枚举类型的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)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程