字段 xx 是 varchar 类型 我首先使用了 SELECT 查询 , 查出了 400 多条数据
SELECT * FROM aaa WHERE xx = 0
确定数据后 UPDATE 更新
UPDATE aaa SET kk = null WHERE xx = 0
发现全部数据的 kk 都变成了 null,查了下 (varchar) = 0 会出问题
但为什么 select 查出来的数据会 和 update 的数据不一样呢?
1
kiracyan 2020-06-23 16:07:15 +08:00
你看看能不能重现这个情况
|
2
chainzhao 2020-06-23 17:14:01 +08:00
varchar 类型建议还是加上引号吧,虽然它能够自动转换,但是会有一些已知的问题出现,例如,不加引号就不会走索引,查询速度差的不是一点点
|
3
fhsan 2020-06-23 17:19:48 +08:00
0 null 空字符串 类型转换 都是巨坑
|
4
takemeaway 2020-06-23 17:20:56 +08:00
(varchar) = 0 不就是代表全部吗? 怎么不一样了? select 也是全部。
|
5
acz154 OP @takemeaway @fhsan @chainzhao @kiracyan
其实 where 还有第二个条件 限定了 400 多条,但 update 的时候不知道为什么忽略了第二个条件,我执行了几次都是这种情况,不知道是不是什么原因导致的 ,用的是 5.7.29 |
6
zhangysh1995 2020-06-24 17:03:07 +08:00
试一下 UPDATE aaa SET kk = null WHERE xx != 0
|