1.创建表 XXLSH lsh流水号字段是 字符型 varchar(10)
create table XXLSH (LSH varchar(10),ZH varchar(10),HM varchar(10) );
2. 插入数据,流水号全部是数值的字符串
insert into XXLSH values('1111','7758998','aaaa');
insert into XXLSH values('2222','7758998','aaaa');
3.进行更新时,where条件不管是字符串还是数值都能更新成功
update XXLSH set HM='xiaohua' where lsh='1111';
update XXLSH set HM='xiaohua' where lsh=2222;
4.插入一条数据,此时流水号是‘no123’
insert into XXLSH values('no123','7758998','aaaa');
5.再次进行更新,报错
update XXLSH set HM='xiaoming' where lsh='1111';
update XXLSH set HM='xiaoming' where lsh=2222;
[Code: 1292, SQL State: 22001] Data truncation: Truncated incorrect DOUBLE value: 'no123'
原因是条件中数据类型不正确。为什么当表里全是数据类型的字符串时,用数值类型条件更新不报错,当表里存在字符串时,用数值类型会受影响。难道是刚开始,虽然定义的类型是varchar类型,但是实际插入的数据是数字,mysql默认是数值类型了,后边插入的数据存在字符串形式。mysql更改类型了?求大神解释一下。