1366 - incorrect Decimal value :‘0‘ for column ‘‘ at row - 1【解决】

修改mysql的时候常见到的一个问题

1.场景

ALTER TABLE `tb_salary` 
MODIFY COLUMN `salary` decimal(20, 2) NULL DEFAULT NULL COMMENT '收入' AFTER `name`;

修改数据库某字段的数据类型从varchar到decimal时,执行完以上sql出现报错如1366 - incorrect Decimal value :'0' for column '' at row - 1

在这里插入图片描述

2.分析

报错信息用百度翻译:1366-第1行的列“”的十进制值“0”不正确。可能原因是varchar字符串存在"0",无法转换位decimal的数值类型。

3.解决

把为字符串0、空字符串’'的数据清除或更改为null,步骤如下:

-- 1查询异常数据
select id, salary from tb_salary where salary = '0' or salary = '';

-- 2.将对应数据置为null
update tb_salary set salary = NULL where salary = '0' or salary = '';

-- 3.重新执行sql
ALTER TABLE `tb_salary`
MODIFY COLUMN `salary` decimal(20, 2) NULL DEFAULT NULL COMMENT '收入' AFTER `name`;

最后修改成功。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值