MySQL 如何处理枚举中的空值和 null 值?
仅当 SQL 模式未设置为 TRADITIONAL,STRICT_TRANS_TABLES 或 STRICT_ALL_TABLES 时,MySQL 才接受枚举的空值。否则,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)
仅当我们没有使用 NOT NULL 与 ENUM 列一起指定时,MySQL 才接受枚举的 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)
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP