MySQL 插入 NULL 插入 0

jon*_*boy 0 mysql null select update

我正在使用 MySQL 和 PhpMyAdmin,我有一个名为的表items- 结构如下;

+------+---------+------+---------+
| name | type    | Null | Default |
+------+---------+------+---------+
| id   | int(11) | No   | None    |
+------+---------+------+---------+
| year | int(4)  | Yes  | Null    |
+------+---------+------+---------+
Run Code Online (Sandbox Code Playgroud)

在 PhpMyAdmin 中,我运行以下查询;

UPDATE `item` SET `item_publication_year` = '' WHERE `item_id` = '5'
Run Code Online (Sandbox Code Playgroud)

这将成功执行。

然后我运行这个查询;

SELECT * FROM `item` WHERE `item_id` = '5'
Run Code Online (Sandbox Code Playgroud)

这将成功执行并产生以下结果;

+-----+------+
| id  | year |
+-----+------+
| 5   | 0    |
+-----+------+
Run Code Online (Sandbox Code Playgroud)

为什么是这个year领域0——不应该是NULL吗?难道我做错了什么?

a_h*_*ame 5

''是一个空字符串,它不是一个NULL值。

其他 DBMS 首先会理所当然地拒绝您的更新语句(因为将字符串分配给数字是无效的)。

如果你想设置一些东西,null那么null不要使用空字符串

UPDATE item 
  SET item_publication_year = null 
WHERE item_id = 5
Run Code Online (Sandbox Code Playgroud)

您还应该为数据类型使用正确的文字类型。'5'是一个字符串,它不是一个数字。5是一个数字。不使用正确类型的文字可能会导致不使用索引。