更新为 NULL 时,列“x”的数据被截断
Posted
技术标签:
【中文标题】更新为 NULL 时,列“x”的数据被截断【英文标题】:Data truncated for column 'x' when updating to NULL 【发布时间】:2018-08-24 08:38:10 【问题描述】:我有一个 mysql 表,其中包含一个名为 free_delivery_treshold 的 float 类型的列,NOT NULL 未选中。
如果我插入省略此列的数据,则插入默认值 (NULL)。
但是,如果我将其值更新为NULL
、空字符串或\N
,我会得到一个
WARN_DATA_TRUNCATED:第 1 行的“free_delivery_treshold”列的数据被截断
错误。
如何将此列的值更新为 NULL ?
【问题讨论】:
【参考方案1】:如果你想将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
Results:
| free_delivery_treshold |
|------------------------|
| (null) |
如果要将NULL
数据更新为空字符串或\N
,则需要使用char
或varchar
而不是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
Results:
| free_delivery_treshold |
|------------------------|
| |
【讨论】:
@GaussianBlurs 它在 sqlfiddle 中工作。是否要将free_delivery_treshold
更新为NULL
?
谢谢,我写的是 SET free_delivery_treshold="NULL"
而不是 free_delivery_treshold=NULL
哈哈是的NULL != "NULL"
,NULL
意思是我不知道"NULL"
是一个字符串值。以上是关于更新为 NULL 时,列“x”的数据被截断的主要内容,如果未能解决你的问题,请参考以下文章