问题描述:Mysql存储的数据结构为 varchar, where查询的类型为数字,select语句不会报错,但是update语句会报错
如:select可以查询
select * from sys_user where user_id = 1;
如:update报错:Data truncation: Truncated incorrect DOUBLE value'User9899' ,其中 User9899 为另一个user_id
update sys_user set user_name = '00001', nick_name = '王小小' where user_id = 1;
以下回答引用自chatGpt, 有用的话,请采纳哇!!!
当MySQL字段类型和传入条件数据类型不一致时,MySQL会进行隐式的数据类型转换。这可能会导致一些问题,如数据损坏、查询效率降低等。
为了避免这种情况的发生,我们可以通过以下几种方法来解决:
综上所述,为了避免因MySQL字段类型和传入条件数据类型不一致而导致的问题,我们应该使用明确的数据类型转换方法、更改表结构、数据清洗等技术。
User9899是ID?
如果能默认转化为数字格式,那就不会出错,如果带有字母符号什么的,无法转化成数字就会报错,可以把你传进来的转化成varchar再去更新
CAST(123 AS VARCHAR);
解决方案已经知道了, 就是想知道 为什么select语句可以使用, update语句会报错