首页 > 解决方案 > 更新为 NULL 时,列“x”的数据被截断

问题描述

我有一个 MySQL 表,其中包含一个名为 free_delivery_treshold 的 float 类型的列,NOT NULL unchecked。如果我插入省略此列的数据,则插入默认值 (NULL)。但是,如果我将其值更新NULL为, 空字符串或者\N我得到一个

WARN_DATA_TRUNCATED:第 1 行的“free_delivery_treshold”列的数据被截断

错误。

如何将此列的值更新为 NULL ?

标签: mysqlsql

解决方案


如果你想更新free_delivery_treshold列,NULL你可以试试这个。

你不能更新free_delivery_treshold为空字符串或\N因为类型是float

CREATE TABLE T(free_delivery_treshold  float);

INSERT INTO T VALUES (1);

UPDATE T
SET free_delivery_treshold =NULL

查询 1

SELECT * FROM T

结果

| free_delivery_treshold |
|------------------------|
|                 (null) |

如果要将NULL数据更新为空字符串,或者\N需要使用charorvarchar而不是 float。

CREATE TABLE T(free_delivery_treshold  varchar(50));

INSERT INTO T VALUES (NULL);

UPDATE T
SET free_delivery_treshold =''
WHERE free_delivery_treshold IS NULL

查询 1

SELECT * FROM T

结果

| free_delivery_treshold |
|------------------------|
|                        |

推荐阅读