mysql - 更新为 NULL 时,列“x”的数据被截断
问题描述
我有一个 MySQL 表,其中包含一个名为 free_delivery_treshold 的 float 类型的列,NOT NULL unchecked。如果我插入省略此列的数据,则插入默认值 (NULL)。但是,如果我将其值更新NULL
为, 空字符串或者\N
我得到一个
WARN_DATA_TRUNCATED:第 1 行的“free_delivery_treshold”列的数据被截断
错误。
如何将此列的值更新为 NULL ?
解决方案
如果你想更新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
需要使用char
orvarchar
而不是 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 |
|------------------------|
| |
推荐阅读
- react-router-v4 - 使用connected-react-router在每次路由更改时更改的“关键”是什么?
- jax-rs - Glassfish/Payara 中带有 Singleton 的 jax-rs sse 客户端
- c++ - 如何将一对向量中一对的第一个元素(字符串)与另一个字符串进行比较?
- jdbc - 未加载 Logstash 'com.mysql.jdbc.Driver'
- python - 在python中将接收到的数据转换为二进制形式
- macos - Applescript 重命名应用程序文件夹中的文件
- networking - NAT 上的 Google Cloud VPN
- winapi - Windows中的命名管道,FILE_FLAG_OVERLAPPED和PIPE_NOWAIT之间的区别
- linux - 尽管使用 gcc 链接器,但仍获得对汇编代码“_printf”错误的未定义引用
- powershell - 使用 select-String 解析日志文件