
字段 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 |